首頁 >後端開發 >php教程 >nginx 網域跳到一例~~~rewrite、proxy

nginx 網域跳到一例~~~rewrite、proxy

WBOY
WBOY原創
2016-07-29 09:02:33950瀏覽

前幾天搭了一個論壇伺服器並放到了公司的區域網路裡面,論壇用的是9066連接埠並在路由器上面做了個連接埠轉發,而且把bbs.xxx.com這個網域也指向了公司的公網IP因為想讓用戶在訪問的時候不用輸入端口號於是就想在公司的web伺服器上面做個跳轉,將訪問bbs.xxx.com的請求都轉到他的伺服器上面去。我第一個想法就是 用 nginx的rewrite,過程很簡單 設定如下:

server {
listen     80;
server_name  bbs.xxx.com;
rewrite  "^/(.*)$"  http://bbs.xxx.com:9066/$1 break; s .xxx.com檢查了一下,註冊,登入發文等等操作都正常,本以為這樣就ok了,結果隨後問題出現了,雖然能正常的跳轉但是用戶瀏覽器的網域欄上的地址後面一直跟著
9066
這個連接埠號,這讓領導者很不滿意,於是我找了下nginx的文檔和在qq群問了下別的朋友,沒有什麼好辦法。於是就改用了

proxy_pass

,這個設定也很簡單:server {listen       80;

server_name             proxy_pass http://bbs.xxx.com:9066/;

          } }


然後再訪問bbs.xxx.com 後面的端口號就不在了,註冊、登錄、發帖都正常,可是不一會兒又出問題了,用戶反映論壇無法註冊,提示說“
單一ip一天內只能註冊5次
”,這是怎麼回事,透過檢查日誌後發現
所有公網發過來的請求竟然都是網關的ip地址
,這下我明白了簡單的加了proxy以後如果不進一步設置的話nginx是不會去判斷真正的客戶端ip的,而是直接把路由的位址作為請求ip,所以會出現上述情況,分析後查了下nginx的wiki 於是就在上面又加了幾條:

server {listen      /         {        proxy_set_header Host $host;        proxy_set_header X-Re       -For $remote_addr;

        proxy_pass http://bbs.xxx.com:9066/;

          }          
改完以後reload 了一下nginx,發現日誌裡面的源ip已經是真實的客戶端地址了,重新註冊,登錄,發帖,都正常,重複了多次後沒有發現問題,客戶那裡也都正常了。

感謝為我提供熱情幫助的三門板牙。

下面是從網路上找的一篇文章,分析的很詳細http://www.beijus.info/?p=730&cpage=1 ,同時也感謝這篇文章的作者「蛋蛋麵」

本文出自「story的天空」博客,請務必保留此出處 http://storysky.blog.51cto.com/628458/486338

以上就介紹了nginx 網域跳躍一例~~~rewrite、proxy,包含了方面的內容,希望對PHP教學有興趣的朋友有幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn