在建站过程中,往往需要在一个服务器发布多个网站,这些网站需要绑定不同的域名,并且都使用 80 端口来访问。下面就这一需求,来说一下解决方案及 nginx 具体配置。
禁用 ip 访问
因为一个服务器部署多个站点,而且都是 80 端口,所以需要先禁用 ip 访问,只支持指定域名访问。禁用 IP 访问有两种方法:
- 在 nginx.conf 中 http 节点下显示指定 default_server,添加如下配置:
1 2 3 4 5 6
| server { listen 80 default_server; server_name _; return 404; }
|
- 在 server 下添加如下代码,仅限制 IP 不限制其他设置解析的主机名,方便后期增加解析。
1 2 3
| if ($host ~ "\d+\.\d+\.\d+\.\d") { return 404; }
|
配置效果如下图所示:
重启 nginx 配置
然后再用 ip 访问自己的网站,会显示如下内容:
给网站指定域名
将 server 中的 server_name
配置成指定的域名,如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| server { listen 80; server_name xxx.xxx.com; root /usr/local/zhangh/blog; index index.html;
include /etc/nginx/default.d/*.conf;
error_page 404 /404.html; location = /404.html { }
error_page 500 502 503 504 /50x.html; location = /50x.html { } }
|
多个网站分别指定不同域名,且共用80端口
这个就比较简单了,就是添加多个server
对象,listen
端口都是80,但是root
目录和server_name
不同。整体配置如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| server { listen 80 default_server; server_name _; return 404; } server { listen 80; server_name xxx.com; root /usr/local/zhangh/blog; index index.html;
include /etc/nginx/default.d/*.conf;
error_page 404 /404.html; location = /404.html { }
error_page 500 502 503 504 /50x.html; location = /50x.html { } }
server { listen 80; server_name xxx.xxx.xxx.com; root /usr/local/zhangh/othersite; index index.html; include /etc/nginx/default.d/*.conf; error_page 404 /404.html; location = /404.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
|