前幾天搭了一個(gè)論壇處事器并放到了公司的局域網(wǎng)內(nèi)里,論壇用的是9066端口并在路由器上面做了個(gè)端口轉(zhuǎn)發(fā),并且把bbs.xxx.com這個(gè)域名也指向了公司的公網(wǎng)IP,因?yàn)橄胱層脩粼跁?huì)見的時(shí)候不消輸入端標(biāo)語(yǔ)于是就想在公司的web處事器上面做個(gè)跳轉(zhuǎn),將會(huì)見bbs.xxx.com的請(qǐng)求都轉(zhuǎn)到他的處事器上面去。我第一個(gè)想法就是 用 nginx的rewrite,進(jìn)程很簡(jiǎn)樸 設(shè)置如下:
server {
listen 80;
server_name bbs.xxx.com;
rewrite "^/(.*)$" http://bbs.xxx.com:9066/$1 break;
}
于是會(huì)見bbs.xxx.com查抄了一下,注冊(cè),登錄發(fā)帖等等操縱都正常,本覺得這樣就ok了,功效隨后問題呈現(xiàn)了,固然能正常的跳轉(zhuǎn)可是 用戶欣賞器的域名欄上的地點(diǎn)后頭一直隨著 9066 這個(gè)端標(biāo)語(yǔ),這讓率領(lǐng)很不滿足,于是我找了下nginx的文檔和在qq群?jiǎn)柫讼麓送獍閭H,沒有什么好步伐。于是就改用了 proxy_pass,這個(gè)設(shè)置也很簡(jiǎn)樸:
server {
listen 80;
server_name bbs.xxx.com;
location /
{
proxy_pass http://bbs.xxx.com:9066/;
}
}
然后再會(huì)見 bbs.xxx.com 后頭的端標(biāo)語(yǔ)就不在了,注冊(cè)、登錄、發(fā)帖都正常,但是紛歧會(huì)兒又出問題了,用戶反應(yīng)論壇無(wú)法注冊(cè),提示說(shuō)“單一ip一天內(nèi)只能注冊(cè)5次”,這是怎么回事,,通過查抄日志后發(fā)明 所有公網(wǎng)發(fā)過來(lái)的請(qǐng)求竟然都是 網(wǎng)關(guān)的ip地點(diǎn) ,這下我大白了簡(jiǎn)樸的加了proxy今后假如不進(jìn)一步配置的話 nginx是不會(huì)去判定真正的客戶端ip的,而是直接把路由的地點(diǎn)作為請(qǐng)求ip,所以會(huì)呈現(xiàn)上述環(huán)境,闡明后查了下 nginx的wiki 于是就在上面又加了幾條:
server {
listen 80;
server_name bbs.xxx.com;
location /
{
proxy_set_header Host $host;
proxy_set_header X-Real-Ip $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://bbs.xxx.com:9066/;
}
}
改完今后 reload 了一下nginx,發(fā)嫡志內(nèi)里的源ip已經(jīng)是真實(shí)的客戶端地點(diǎn)了,從頭注冊(cè),登錄,發(fā)帖,都正常,反復(fù)了多次后沒有發(fā)明問題,客戶哪里也都正常了。
感激為我提供熱情輔佐的三門板牙。