由於公司內網有多台伺服器的http服務要對映到公司外網靜態ip,如果用路由的埠對映來做,就只能一台內網伺服器的80埠對映到外網80埠,其他伺服器的80埠只能對映到外網的非80埠。非80埠的對映在訪問的時候要網域名稱加上埠,比較麻煩。並且公司入口路由最多只能做20個埠對映。肯定以後不夠用。
然後k兄就提議可以在內網搭建個nginx反向**伺服器,將nginx反向**伺服器的80對映到外網ip的80,這樣指向到公司外網ip的網域名稱的http請求就會傳送到nginx反向**伺服器,利用nginx反向**將不同網域名稱的請求**給內網不同機器的埠,就起到了「根據網域名稱自動**到相應伺服器的特定埠」的效果,而路由器的埠對映做到的只是「根據不同埠自動**到相應伺服器的特定埠」,真是喜大普奔啊。
涉及的知識:nginx編譯安裝,nginx反向**基本配置,路由埠對映知識,還有網路網域名稱等常識。
本次實驗目標是做到:在瀏覽器中輸入***123.tk能訪問到內網機器192.168.10.38的3000埠,輸入***456.tk能訪問到內網機器192.168.10.40的80埠。
伺服器ubuntu 12.04
###更新倉庫
apt-get update -y
apt-get
install
wget -y
pcre是為了編譯rewrite模組,zlib是為了支援gzip功能。額,這裡nginx版本有點舊,因為我還要做公升級nginx的實驗用。大家可以裝新版本。
cd
/usr/
local
/src
wget
ftp
://
ftp
.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.33.
tar
.gz
wget
tar
.gz
wget
tar
.gz
tar
xf pcre-8.33.
tar
.gz
tar
xf zlib-1.2.8.
tar
.gz
#安裝編譯環境
apt-get
install
build-essential libtool -y
#建立nginx使用者
所謂的unprivileged user
useradd
-s /bin/
false
-r -m -d /nonexistent www
#開始編譯安裝
#給資料夾授權
chown
-r www:www /usr/
local
/nginx
#修改配置檔案
額,關於負載均衡和快取就不多說了,這裡只是要起到乙個簡單的「網域名稱**」功能。
另外,由於http請求最後都是由反向**伺服器傳遞給後段的機器,所以後端的機器原來的訪問日誌記錄的訪問ip都是反向**伺服器的ip。
要想能記錄真實ip,需要修改後端機器的日誌格式,這裡假設後端也是一台nginx:
在後端配置檔案裡面加入這一段即可:
再看看原來日誌的格式長什麼樣:
看出區別了吧
proxy_connect_timeout 300s;
proxy_read_timeout 300s;
proxy_send_timeout 300s;
proxy_buffer_size 64k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_ignore_client_abort on;
報錯日誌:
...upstream timed out (110: connection timed out)
while
reading response header from upstream, client: ...(後面的省略)
從日誌看來是連線超時了,網上一通亂查之後估計可能是後端伺服器響應超時了,本著大膽假設,小心求證的原則,既然假設了錯誤原因就要做實驗重現錯誤:那就調整**超時引數,反過來把**超時閥值設小(比如1ms)看會不會次次出現504。後來發現把proxy_read_timeout 這個引數設定成1ms的時候,每次訪問都出現504。於是把這個引數調大,加入上面那段配置,解決問題了。
乙個ip繫結多個網域名稱
乙個ip繫結多個網域名稱 ip位址一樣,不一樣的是不同的埠號,不同的埠號對應不同的網域名稱 在http vhost.conf裡面如下配置 新增新的位址,繫結同乙個ip,但是埠號不一樣 這裡是81 乙個apache可以監聽多個埠,啟動81埠 在httpd.conf裡面搜尋listen 新增listen...
Tomcat配置乙個ip繫結多個網域名稱
在網上找了半天也沒找到相關的資料,都說的太含糊.本人對tomcat下配置 一ip對多網域名稱的方法詳細如下,按下面配置一定能成功,經過測試了.因無網域名稱解析伺服器,所以在hosts上配,來模擬dns解析.10.1.1.241 localhost 指向gg資料夾 10.1.1.241 localho...
Tomcat配置乙個ip繫結多個網域名稱
在網上找了半天也沒找到相關的資料,都說的太含糊.本人對tomcat下配置 一ip對多網域名稱的方法詳細如下,按下面配置一定能成功,經過測試了.因無網域名稱解析伺服器,所以在hosts上配,來模擬dns解析.10.1.1.241 localhost 指向gg資料夾 10.1.1.241 localho...