nginx 實現多埠轉發
阿新 • • 發佈:2018-11-17
什麼是埠轉發
我們在伺服器上搭建了多個應用,例如9000埠應用是微信驗證授權,9001埠是移動端站點,我們可以通過下面的方式訪問;
localhost:9000
localhost:9001
但是我們不希望用埠的方式進行訪問,也就是說兩個應用通過不同域名的80埠進行訪問。但是我們知道伺服器上的一個埠只能被一個程式使用,這時候如何該怎麼辦呢?一個常用的方法是用 Nginx 進行埠轉發。
Nginx 的實現原理是:用 Nginx 監聽 80 埠,當有 HTTP 請求到來時,將 HTTP 請求的 HOST 等資訊與其配置檔案進行匹配並轉發給對應的應用。
例如當用戶訪問 wx.test.com
下面是一個簡單的 Nginx 配置檔案(部分):
user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; # Load dynamic modules. See /usr/share/nginx/README.dynamic. include /usr/share/nginx/modules/*.conf; events { worker_connections 1024; } http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; # Load modular configuration files from the /etc/nginx/conf.d directory. # See http://nginx.org/en/docs/ngx_core_module.html#include # for more information. include /etc/nginx/conf.d/*.conf; server { listen 80; server_name wx.test.com; index index.html index.htm index.php; location / { proxy_pass http://127.0.0.1:9000; proxy_set_header X_Real_IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; } access_log /var/log/nginx/pm2-nginx-access.log main; error_log /var/log/nginx/pm2-nginx-error.log error; } server { listen 80; server_name m.test.com; index index.html index.htm index.php; location / { proxy_pass http://127.0.0.1:9001; proxy_set_header X_Real_IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; } access_log /var/log/nginx/pm2-nginx-access.log main; error_log /var/log/nginx/pm2-nginx-error.log error; } }
這樣就可以實現域名訪問了。
訪問 wx.test.com,我們自動將其請求轉發給埠為 9000 的 Tomcat 應用處理。
訪問 m.test.com,我們自動將其請求轉發給埠為 9001 的 Tomcat 應用處理。