Nginx 单ip 多域名多站点

Nginx 单IP绑定多域名配置 顶级域名重定向到www域名
发表于2016/3/12 10:48:37 442人阅读
分类: javaweb环境搭建 建站

在网站部署中,通常会有多个域名,可以是多个子域名也可以是其它域名,例如我的域名是yddsj.com,有以下域名需要绑定
www.yddsj.com
blog.yddsj.com
bbs.yddsj.com
www.abc.com
且每个域名对应的是一个网站程序,而我们只有一个公网IP的时候应该怎样去解析这么多域名并将他们转发到各自的网站程序呢?

另外,本文讲解的前提是以上所有域名都能解析到你的服务器上的nginx服务器了,且本文为例的yddsj.com都是虚构的域名…

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 blog.yddsj.com; # 博客网站域名
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 bbs.yddsj.com;
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 www.abc.com;
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域名,作者在另一片文章中已经提到过,可参考点击打开链接 在文章最后有说明。
例如我要将yddsj.com重定向到www.yddsj.com下则要进行以下配置
# 主站网站程序路径
upstream yddsj {
server 127.0.0.1:81;
}

server {
listen 80;
server_name www.yddsj.com yddsj.com; # 主站网站域名包括www域名和顶级域名
if ($host = ‘yddsj.com’ ) { # 这里的作用就是把访问yddsj.com的请求重定向到www域名下面
rewrite ^/(.*)$ http://www.yddsj.com/$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;
}
}