nginx實現反向代理 配置多域名以及多端口號


多個服務部署在同一個服務器,使用不同的端口。

一、目標需求

  1. 如果不想帶上端口號,就只能訪問 80 或 443 端口。
  2. 可以用過二級目錄區分服務,通過反向代理轉發到不同的 Server。
  3. 可以用過子域名區分服務,通過反向代理轉發到不同的 Server。

二、現狀評估

  1. 對於不帶端口號訪問,以我目前的經驗來看,找不到其它更好的方法,只能使用 80 或 443 端口。
  2. 使用二級目錄區分服務,可行性很大。
    • 能通過二級目錄名,明確區分服務。
    • 可是和直接使用端口號差別不大,只是把辨別服務的方法,從端口號變成了二級目錄名。
    • 可能導致 url 過長。
    • 還是沒有什么美觀性。
  3. 使用子域名區分服務,可行性與二級目錄相差無幾。
    • 能通過子域名,明確區分服務。
    • 具有一定的美觀性。

三、解決方案

使用子域名區分服務 的方式,然后使用 nginx 做反向代理,分發到不同的端口。

1、找到nginx的配置文件

  打開nginx的配置文件,打開  /安裝路徑/conf/nginx.conf,進行配置

2、修改配置

server {
 
        listen       80;
 
        server_name  *.abc.com;
 
        if ($http_host ~* "^(.*?)\.abc\.com$") {    #正則表達式
 
                set $domain $1;                     #設置變量
        }
 
 
        location / {
 
            if ($domain ~* "shop") {
 
               proxy_pass http://abc.com:3001;      #域名中有shop,轉發到3001端口
 
            }
 
            if ($domain ~* "mail") {
 
               proxy_pass http://abc.com:3002;      #域名中有mail,轉發到3002端口
 
            }
 
 
            tcp_nodelay     on;
 
            proxy_set_header Host            $host;
 
            proxy_set_header X-Real-IP       $remote_addr;
 
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 
            #以上三行,目的是將代理服務器收到的用戶的信息傳到真實服務器上
 
 
            root   html;
 
            index  index.html index.htm;            #默認情況
 
        }
 
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM