nginx可以很方便的配置成反向代理伺服器:
server { listen 80; server_name localhost; location / { proxy_pass http://x.x.x.x:9500; proxy_set_header host $host:80; proxy_set_header x-real-ip $remote_addr; proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for; proxy_set_header via "nginx"; } }
但是如果nginx的監聽端口不是預設的80端口,改為其他端口如81端口。
後端伺服器中request.getserverport()無法獲得正確的端口,返回的仍然是80;
在response.sendredirect()時,客戶端可能無法獲得正確的重定向url。
正確的配置方法下面我們詳細來看:
增加nginx虛擬主機
要做nginx的轉發,當然就要對nginx做設定。可以透過新增虛擬主機配置來增強nginx的功能。首先看看nginx的設定文件,筆者的nginx檔案是在/etc/nginx/nginx.conf。從上圖可以看到nginx在最後引入了vhosts.d目錄下的設定檔。那麼就要在/etc/nginx/vhosts.d目錄下建立以.conf為後綴的檔案(如果該目錄不存在需要自行建立)。
nginx做非80埠轉送
要做轉發,可以使用nginx的proxy_pass設定項目。 nginx監聽80端口,接收到請求之後就會轉送到要轉送的url。具體的配置如下:
server { server_name www.test.com listen 80; location / { proxy_pass http://127.0.0.1:8080; } }
是的,就是這麼簡單就可以了。這是配置連接埠轉送的核心。
但是,當遇到需要取得真實ip的業務時,還需要加入關於真實ip的設定:
server { server_name www.test.com listen 80; location / { proxy_pass http://127.0.0.1:8080; proxy_set_header host $host:80; proxy_set_header x-real-ip $remote_addr; proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for; } }
proxy_set_header這句設定是改變http的請求頭。而host是請求的主機名,x-real-ip是請求的真實ip,x-forwarded-for表示請求是由誰發起的。
以上是Nginx伺服器中怎麼設定非80埠的連接埠轉發的詳細內容。更多資訊請關注PHP中文網其他相關文章!