![2個或多個Web伺服器共用一個靜態IP](https://rvso.com/image/747362/2%E5%80%8B%E6%88%96%E5%A4%9A%E5%80%8BWeb%E4%BC%BA%E6%9C%8D%E5%99%A8%E5%85%B1%E7%94%A8%E4%B8%80%E5%80%8B%E9%9D%9C%E6%85%8BIP.png)
我從 ISP 獲得了 1 個靜態 IP。我有 2 個 NS(來自 NS 提供者)將我的網域指向我的 wan IP。我的問題:如何讓 server1.domainname.td 到達網路內的伺服器 1,如何讓 server2.domainname.td 到達
也放置在我的本地網路上的伺服器 2(server1 =192.168.1.2 和 server2=192.168.1.3)僅使用連接埠80(無連接埠轉送)(server1=ms win server2=Linux) 第二個問題:如何存取位於我的網路之外的伺服器上的server3.domainname.td(網路上的另一個靜態IP)
答案1
如果您只有一個 IP 位址(因此只有一個連接埠80
和443
),您需要使用反向代理喜歡nginx將請求轉送到適當的內部伺服器。
您需要新增一筆A
DNS 記錄server1.example.com
並server2.example.com
指向您的公共地址。
這nginx如果您有一個好的路由器,伺服器可能正在您的網關上運行開放式WRT韌體或具有代理功能的專業路由器。否則,您需要使用其中一台內部伺服器並設定從路由器到內部伺服器的連接埠轉送。
網路上有很多關於如何設定的教學課程nginx 作為反向代理。
請注意,此配置會很慢且容易失敗。對於專業部署,請使用外部網路託管。
答案2
如果您只關心網路流量(連接埠 443 或連接埠 80),正如其他人建議的那樣,請使用 nginx。它非常輕。這就是我所做的。
假設 Linux,在 /etc/nginx 中為您的網路建立一個檔案(例如 proxy.conf):
server {
listen 80;
server_name server1.domainname.td;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_pass http://localhost:8085;
}
}
在文件(例如...route.conf)中建立此節並將其放在 /etc/nginx 下(我假設是 linux) 根據您的目的添加所需數量的節。在 /etc/nginx/nginx.conf 中,包含它:
include /etc/nginx/route.conf (do this before the closing bracket)
對於 server3,將 proxy_pass 變更為您的主機名稱或 ip:
proxy_pass http://youroutsideserver ..
更新:如 Piotr 所示,將您的route.conf 檔案放在 /etc/nginx/sites-available 中,並符號連結到啟用網站的目錄
ln -s /etc/nginx/sites-available/router.conf /etc/nginx/sites-enabled