nginx實現反向代理 配置多域名以及多埠號
阿新 • • 發佈:2022-03-29
多個服務部署在同一個伺服器,使用不同的埠。
一、目標需求
- 如果不想帶上埠號,就只能訪問 80 或 443 埠。
- 可以用過二級目錄區分服務,通過反向代理轉發到不同的 Server。
- 可以用過子域名區分服務,通過反向代理轉發到不同的 Server。
二、現狀評估
- 對於不帶埠號訪問,以我目前的經驗來看,找不到其它更好的方法,只能使用 80 或 443 埠。
- 使用二級目錄區分服務,可行性很大。
- 能通過二級目錄名,明確區分服務。
- 可是和直接使用埠號差別不大,只是把辨別服務的方法,從埠號變成了二級目錄名。
- 可能導致 url 過長。
- 還是沒有什麼美觀性。
- 使用子域名區分服務,可行性與二級目錄相差無幾。
- 能通過子域名,明確區分服務。
- 具有一定的美觀性。
三、解決方案
使用子域名區分服務 的方式,然後使用 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; #預設情況 } }