在网站部署中,通常会有多个域名,可以是多个子域名也可以是其它域名,例如我的域名是,有以下域名需要绑定
且每个域名对应的是一个网站程序,而我们只有一个公网IP的时候应该怎样去解析这么多域名并将他们转发到各自的网站程序呢?
另外,本文讲解的前提是以上所有域名都能解析到你的服务器上的nginx服务器了,且本文为例的都是虚构的域名...
nginx单IP多域名配置
# 博客网站程序路径upstream blog {server 127.0.0.1:9001;}# 论坛网站程序路径upstream bbs {server 127.0.0.1:9002;}# xx网站程序路径upstream abc {server 127.0.0.1:9003;}server {listen 80;server_name ; # 博客网站域名location / {index index.html index.jsp; proxy_pass http://blog; proxy_set_header REMOTE-HOST $remote_addr;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;client_max_body_size 100m; }}server {listen 80;server_name ;location / {index index.html index.php; # 论坛网站域名 proxy_pass http://bbs; proxy_set_header REMOTE-HOST $remote_addr;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;client_max_body_size 100m; }}server {listen 80;server_name ;location / {index index.html index.php; # xx网站域名 proxy_pass http://abc; proxy_set_header REMOTE-HOST $remote_addr;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;client_max_body_size 100m; }}
主要是配置一个upstream指定后端代理的网站地址,再配置一个server,指定其中的server_name为你的域名,以及proxy_pass为upstream的名称。
nginx 顶级域名重定向到www域名
至于顶级域名为什么要重定向到www域名,作者在另一片文章中已经提到过,可参考点击打开链接 在文章最后有说明。
例如我要将重定向到下则要进行以下配置
# 主站网站程序路径upstream yddsj {server 127.0.0.1:81;}server {listen 80;server_name ; # 主站网站域名包括www域名和顶级域名if ($host = '' ) { # 这里的作用就是把访问的请求重定向到www域名下面rewrite ^/(.*)$ /$1 permanent;}location / {index index.html index.jsp; proxy_pass http://yddsj;proxy_set_header REMOTE-HOST $remote_addr;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;client_max_body_size 100m; }}