部署多个应用
为了让一台服务器可以处理访问多个域名的不同请求,我们用虚拟主机(virtual server)来定义一种域名的处理方式,在 Nginx 中这对应着一个 server
块。因此,HTTP 请求到达时,Nginx 首先要找到处理它的 server
块。
虚拟主机优势:
- 节省硬件资源:多个网站共享一台物理服务器
- 降低成本:减少服务器购买和维护费用
- 灵活管理:可以为每个网站单独配置和管理
基于端口
1 台服务器、1 个域名,通过不同端口部署多个应用。
server {
listen 80;
server_name demo.newarea.site;
root /home/www/80;
}
server {
listen 82;
server_name demo.newarea.site;
root /home/www/82;
}
http://demo.newarea.site/
访问 80 端口的应用
http://demo.newarea.site:82/
访问 82 端口的应用
基于域名
1 台服务器、1 个端口,通过不同域名部署多个应用。
server {
listen 80;
server_name demo.newarea.site;
root /home/www/demo.newarea.site;
}
server {
listen 80;
server_name demo1.newarea.site;
root /home/www/demo1.newarea.site;
}
http://demo.newarea.site/
访问 demo 应用
http://demo1.newarea.site/
访问 demo1 应用
server_name
后可以配置多个域名,用空格隔开。如下面这个例子中,server_name
指定了三个域名:newarea.site
、www.newarea.site
和 demo.newarea.site
。这些域名都指向同一个服务器块,当用户请求任意一个这些域名时,Nginx 会使用该块中的配置处理请求。
server {
listen 80;
server_name newarea.site www.newarea.site demo.newarea.site;
root /home/www/demo.newarea.site;
}
当所有 server
块都没有匹配上请求的域名时,Nginx 需要一个默认的 server
块来处理这些没有明确匹配域名的请求。这个默认的 server
块可以通过在 listen
指令中使用 default_server
来指定。如果没有配置 default_server
,Nginx 会选择第一个定义的 server
块(监听同一端口)作为默认服务器。
server {
listen 80 default_server;
server_name demo.newarea.site;
root /home/www/demo.newarea.site;
}
基于路径
1 台服务器、1 个域名,通过不同路径部署多个应用。
server {
listen 80;
server_name demo.newarea.site;
root /home/www/demo.newarea.site;
location / {
root /home/www/demo.newarea.site;
}
location /demo1 {
root /home/www/demo1.newarea.site;
}
}
http://demo.newarea.site/
访问 demo 应用
http://demo.newarea.site/demo1/
访问 demo1 应用