這不是一個難題,隻是記錄下來我的經驗,如有不當或者錯誤之處,請各位不吝賜教。
我原來在一家線上監控車輛位置的軟體公司上班,産品初創之時,有許多系統上線,諸如,給客戶使用的系統,給營運公司使用的系統,還有背景監控支撐系統,而且各種系統使用的域名不同,技術語言不同,甚至于作業系統也不一樣,而我們的ip資源有限,當然也不希望使用過多的ip進行域名綁定,我們希望通過一個入口ip完成所有的域名綁定,這樣就存在多伺服器、多服務,在這種情況下,我采用了一台專門的反向代理伺服器,進行請求轉發和靜态内容緩存,效果還是不錯的。
簡單說一下大體過程:
首先在本地/etc/hosts檔案中添加本地位址和域名的解析,比如,内部位址為192.168.0.110,此系統對應的域名是www.intoidc.net,則添加“192.168.0.110 www.intoidc.net”
然後,在nginx系統中添加虛拟主機:/etc/nginx/sites-enabled/www.intoidc.net;
server {
listen 80;
server_name www.intoidc.net;
#location ~.*\.(htm|html|gif|jpg|jpeg|png|bmp|ico|txt|css|js)?$ {
# root /usr/share/nginx/www/m.xingchetong.com;
# expires 30d;
#}
#以上注釋掉的是用于靜态緩存的内容
location / {
proxy_pass http://www.intoidc.net:8080;
}
#access_log off;
access_log /var/log/nginx/www.intoidc.net.access.log main;
error_log /var/log/nginx/www.intoidc.net.error.log;
}
第三,部署jetty伺服器,将此應用系統的虛拟主機名稱更改為www.intoidc.net;
檔案路徑:/usr/local/jetty7/contexts/www.intoidc.net.xml
...
<!-- virtual hosts -->
<set name="virtualhosts">
<array type="string">
<item>www.intoidc.net</item>
<item>localhost</item>
<item>127.0.0.1</item>
</array>
</set>
這樣就可以自動的通路到内部的jetty的8080端口的對應虛拟主機上了,對于其他的主機,無論是在那台内部伺服器上,也無論是哪個端口,都可以依次設定即可。
當然,nginx伺服器要進行必要的設定,我把我的設定貼出來:
在/etc/nginx/conf.d目錄添加反向代理配置:檔案名任意.conf
proxy_redirect off ;
proxy_set_header host $host;
proxy_set_header x-real-ip $remote_addr;
proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
proxy_connect_timeout 5;
proxy_read_timeout 60;
proxy_send_timeout 5;
proxy_buffer_size 32k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 1024m;
proxy_temp_path /var/cache/nginx/tmp;
proxy_cache_path /var/cache/nginx/cache levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;
#log_format main ‘$remote_addr|[$time_local][$body_bytes_sent]"$scheme://$host$request_uri"|$server_protocol|$status["$http_user_agent"]‘;
# main = access
log_format main ‘$remote_addr - $remote_user [$time_local] "$request" ‘
‘$status $body_bytes_sent "$http_referer" ‘
‘"$http_user_agent" $http_x_forwarded_for‘;
log_format globa ‘$remote_addr - $remote_user [$time_local] "$request" ‘
‘$status $body_bytes_sent "$http_referer" ‘
‘"request_method $scheme://$host$request_uri $server_protocol" $status $body_bytes_sent‘
‘"$http_user_agent" "$http_x_forwarded_for"‘;
以上配置的具體參數,要根據大家網站的通路量和伺服器配置進行調整,這個可以在運作過程中慢慢總結。
本文出自 “” 部落格,請務必保留此出處