1. 程式人生 > >Nginx反向代理實現多個域名指向同一個ip的不同網站解決方法

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;     
                                }
                        }