在網站部署中,通常會有多個域名,可以是多個子域名也可以是其它域名,例如我的域名是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;
}
}