nginx監聽相同埠通過域名分發到不同的伺服器
阿新 • • 發佈:2019-01-10
前言
前段時間給朋友開發網站, 上線幾個月後想要接入支付寶線上支付. 支付寶介面申請需要給一個已經上線的網站. 由於一些原因, 朋友的網站沒有申請通過, 現需用B2C網站做申請之用. 但是已上線的站點不能停用, 本著節約成本的原則, 我拒絕了他再去租用一臺雲伺服器. 之前接觸過一點點nginx, 便想通過nginx實現同一臺雲伺服器/相同埠(80)通過域名做請求轉發.
準備工作
- 準備sunny ngrok, 並下載相應客戶端版本, 用於模擬兩個域名
- 準備兩個伺服器(當前環境:Tomcat7.0.59 & php7+apache2.4), 也可以使用兩個tomcat伺服器
配置內網穿透
在sunny ngrok申請兩個賬號, 同時對映到 localhost:8081
:
並在本地啟用內網穿透:
配置nginx
將hyong.free.ngrok.cc
和hyong2.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 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"
啟動伺服器
視情況而定, 當前啟動 Tomcat&Apache
測試驗證
漂亮: 測試通過!!!
總結
- nginx並未使用在真實專案中, 因此對nginx並未深入研究
- 除了負載均衡(個人覺得應該叫併發瓶頸轉移), 還可以做請求轉發
- 經過本次測試, 發現nginx還具有埠路由的功能. 此後做web開發時, 就可以同時對外提供多個相同埠的不同服務了 ^ - ^
如果發現本文內容有誤, 歡迎留言討論…