對於Web而已,80端口和443端口是十分重要的,原則上需要輸入http://domain.com:80才可以瀏覽網頁的,但由於默認端口是80,所以‘:80’可以忽略。同理對於https的443端口也一樣。
隨着服務器性能的提升和業務的需求,一台服務器上往往會同時有多個服務,這些服務都希望監聽80端口,比如有vue.msg.com和react.msg.com。這時候我們可以使用nginx的代理轉發功能幫我們實現共用80端口的需求。

http
首先我們先在兩個空閑的端口上分別部署項目(非80,假設是8080和8081),nginx.conf配置如下:
$ vim /ect/nginx/nginx.conf
// nginx.conf # vue項目配置 server { listen 8080; root /web/vue-base-demo/dist/; index index.html; location / { try_files $uri $uri/ /index.html; # 路由模式history的修改 } } # react項目配置 server { listen 8081; root /web/react-base-demo/build; index index.html; location / {} }
上面就是常規的配置,緊接着如果已經做好域名解析,希望vue.msg.com打開vue項目,react.msg.com打開react項目。我們需要再做兩個代理,如下:
// nginx.conf # nginx 80端口配置 (監聽vue二級域名) server { listen 80; server_name vue.msg.com; location / { proxy_pass http://localhost:8080; # 轉發 } } # nginx 80端口配置 (監聽react二級域名) server { listen 80; server_name react.msg.com; location / { proxy_pass http://localhost:8081; # 轉發 } }
nginx如果檢測到vue.msg.com的請求,將原樣轉發請求到本機的8080端口,如果檢測到的是react.msg.com請求,也會將請求轉發到8081端口。
這樣nginx對外就有四個服務,我們只需要公布80端口的就可以了,這樣就實現了多個服務共用80端口。