Nginx反向代理實現多個域名指向同一個ip的不同網站解決方法
一個伺服器需要掛載多個專案【重點是都能通過域名訪問】
實現原理:
1.當前市面上看到的一些伺服器,開放的埠一般都要求為 '80' 埠 所以80埠成了商用埠
2.域名的繫結是繫結一個一般是繫結你的伺服器ip地址
3.使用伺服器的80埠攔截訪問的域名是什麼跳轉至伺服器的其他
舉例
- 只有一臺伺服器,一個IP;
- 伺服器上有多個應用執行在不同的埠。例如:
- 127.0.0.1:4000 執行著一個部落格應用
- 127.0.0.1:3009 執行著一個微信公眾號機器人的後臺希望不同的域名,都解析到該IP的80埠,但是轉發到不同的埠去:
- www.baidu.com 能訪問到127.0.0.1:4000的應用
- 新增一個Ai.baidu.com 能訪問到127.0.0.1:3009的微信後臺(微信要求繫結伺服器時繫結的是80埠)
這裡給出 Nginx 的幾個命令 更改之後需要重啟你的Nginx 反向代理!
(1)vim編輯nginx的nginx.conf(反向代理配置檔案)
sudo vi /etc/nginx/nginx.conf
(2)使用下面命令安裝nginx
yum install nginx
(3)啟動Nginx
service nginx start
或
systemctl start nginx.service
(4)重啟nginx
service nginx restart
具體步驟
1. 在Nginx的conf中新增upstream
指向第二個應用的本機地址。
upstream baidu{
server 127.0.0.1:3009;
}
附上原有的第一個應用的upstream。
upstream Ai.baidu{
server 127.0.0.1:3009;
}
2. 在Nginx的conf中新增二級域名主機頭80埠的偵聽
PS:本例中,要新新增的解析二級域Ai.baidu.com
埠號為80
server_name 精確匹配到二級域名(本例中為Ai.baidu.com。其他規則或www也可以,只要與域名商處解析行為一致即可)
再給conf新增如下1個server:
server {
listen 80;
server_name www.baidu.com;
location / {
proxy_pass http://baidu;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 80;
server_name Ai.baidu.com;
location / {
proxy_pass http://Ai.baidu;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}