天天看點

nginx簡單的釋出多個網站

這不是一個難題,隻是記錄下來我的經驗,如有不當或者錯誤之處,請各位不吝賜教。

我原來在一家線上監控車輛位置的軟體公司上班,産品初創之時,有許多系統上線,諸如,給客戶使用的系統,給營運公司使用的系統,還有背景監控支撐系統,而且各種系統使用的域名不同,技術語言不同,甚至于作業系統也不一樣,而我們的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"‘;

以上配置的具體參數,要根據大家網站的通路量和伺服器配置進行調整,這個可以在運作過程中慢慢總結。

本文出自 “” 部落格,請務必保留此出處

繼續閱讀