1. 程式人生 > 其它 >nginx實現反向代理 配置多域名以及多埠號

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; #預設情況 } }