1. 程式人生 > >nginx監聽相同埠通過域名分發到不同的伺服器

nginx監聽相同埠通過域名分發到不同的伺服器

前言

前段時間給朋友開發網站, 上線幾個月後想要接入支付寶線上支付. 支付寶介面申請需要給一個已經上線的網站. 由於一些原因, 朋友的網站沒有申請通過, 現需用B2C網站做申請之用. 但是已上線的站點不能停用, 本著節約成本的原則, 我拒絕了他再去租用一臺雲伺服器. 之前接觸過一點點nginx, 便想通過nginx實現同一臺雲伺服器/相同埠(80)通過域名做請求轉發.

準備工作

  1. 準備sunny ngrok, 並下載相應客戶端版本, 用於模擬兩個域名
  2. 準備兩個伺服器(當前環境:Tomcat7.0.59 & php7+apache2.4), 也可以使用兩個tomcat伺服器

配置內網穿透

在sunny ngrok申請兩個賬號, 同時對映到 localhost:8081:
第一個賬號配置
第二個賬號配置
並在本地啟用內網穿透:
開啟本地對映

配置nginx

hyong.free.ngrok.cchyong2.free.ngrok.cc監聽埠同時對映到8081(與SunnyNgrok配置一致即可)

worker_processes  1;
events {
    worker_connections  1024;
}

http {
    include             mime.types;
    default_type        application/octet-stream;
    sendfile            on;
    keepalive_timeout   65
; #gzip on; # 配置第一個代理規則 # 域名: hyong.free.ngrok.cc # 監聽埠: 8081 server { listen 8081; server_name hyong.free.ngrok.cc; location / { root I:/php/httpd-2.4.26-Win64-VC15/Apache24/htdocs; index index
.php index.html; proxy_pass http://127.0.0.1:8080; } } # 配置第二個代理規則 # 域名: hyong2.free.ngrok.css # 監聽埠: 8081, 埠與第一個規則相同 server { listen 8081; server_name hyong2.free.ngrok.cc; location / { root I:\java-working\server\apache-tomcat-7.0.59; index index.jsp index.html; proxy_pass http://127.0.0.1:9000; } } }

接下來啟動nginx中文網:
啟動nginx
nginx for windows相關命令
cmd> cd nginx_home:

命令 說明
start nginx 後臺啟用nginx, 前臺啟動(cmd>nginx.exe)
nginx -s stop 快速停止
nginx -s quit 安全停止
nginx -s reload 改變配置,開始新的工作程序與新配置,優雅的關閉舊的工作程序
nginx -s reopen 重啟, 重啟日誌檔案

校驗nginx啟動是否成功: tasklist /fi "imagename eq nginx.exe"
校驗nginx是否啟動

啟動伺服器

視情況而定, 當前啟動 Tomcat&Apache

測試驗證

漂亮: 測試通過!!!

總結

  1. nginx並未使用在真實專案中, 因此對nginx並未深入研究
  2. 除了負載均衡(個人覺得應該叫併發瓶頸轉移), 還可以做請求轉發
  3. 經過本次測試, 發現nginx還具有埠路由的功能. 此後做web開發時, 就可以同時對外提供多個相同埠的不同服務了 ^ - ^

如果發現本文內容有誤, 歡迎留言討論…