原文鏈接:https://blog.csdn.net/wild46cat/article/details/52997005
-------------------------------------------------------------
配置文件下載地址:https://download.csdn.net/download/zengmingen/10462400
nginx 代理多個服務器——多個server方式
上一篇文章(http://blog.csdn.net/wild46cat/article/details/52840125)介紹了nginx的基本配置和使用方法,并且簡單的介紹了一下如何利用nginx結合tomcat進行使用,達到反向代理的作用。現在我們要使用nginx達到這樣的一個目的,能夠代理多個服務器。
首先修改配置文件:
- #user??nobody;??
- worker_processes??1;??
- ??
- #error_log??logs/error.log;??
- #error_log??logs/error.log??notice;??
- #error_log??logs/error.log??info;??
- ??
- #pid????????logs/nginx.pid;??
- ??
- ??
- events?{??
- ????worker_connections??1024;??
- }??
- ??
- ??
- http?{??
- ????include???????mime.types;??
- ????default_type??application/octet-stream;??
- ??
- ????#log_format??main??'$remote_addr?-?$remote_user?[$time_local]?"$request"?'??
- ????#??????????????????'$status?$body_bytes_sent?"$http_referer"?'??
- ????#??????????????????'"$http_user_agent"?"$http_x_forwarded_for"';??
- ??
- ????#access_log??logs/access.log??main;??
- ??
- ????sendfile????????on;??
- ????#tcp_nopush?????on;??
- ??
- ????#keepalive_timeout??0;??
- ????keepalive_timeout??65;??
- ??
- ????#gzip??on;??
- ??
- ????server?{??
- ????????listen???????9922;??
- ????????server_name??firstProxyServer;??
- ??
- ????????#charset?koi8-r;??
- ??
- ????????#access_log??logs/host.access.log??main;??
- ??
- ????????#location?/?{??
- ???????????#root???html;??
- ????????????#index??index.html?index.htm;??
- ????????#}??
- ????????location?/?{??
- ????????????proxy_pass?http://localhost:8989;??
- ????????}??
- ??
- ????????#error_page??404??????????????/404.html;??
- ??
- ????????#?redirect?server?error?pages?to?the?static?page?/50x.html??
- ????????#??
- ????????error_page???500?502?503?504??/50x.html;??
- ????????location?=?/50x.html?{??
- ????????????root???html;??
- ????????}??
- ??
- ????????#?proxy?the?PHP?scripts?to?Apache?listening?on?127.0.0.1:80??
- ????????#??
- ????????#location?~?\.php$?{??
- ????????#????proxy_pass???http://127.0.0.1;??
- ????????#}??
- ??
- ????????#?pass?the?PHP?scripts?to?FastCGI?server?listening?on?127.0.0.1:9000??
- ????????#??
- ????????#location?~?\.php$?{??
- ????????#????root???????????html;??
- ????????#????fastcgi_pass???127.0.0.1:9000;??
- ????????#????fastcgi_index??index.php;??
- ????????#????fastcgi_param??SCRIPT_FILENAME??/scripts$fastcgi_script_name;??
- ????????#????include????????fastcgi_params;??
- ????????#}??
- ??
- ????????#?deny?access?to?.htaccess?files,?if?Apache's?document?root??
- ????????#?concurs?with?nginx's?one??
- ????????#??
- ????????#location?~?/\.ht?{??
- ????????#????deny??all;??
- ????????#}??
- ????}??
- ??
- ?????server?{??
- ????????listen???????9977;??
- ????????server_name??secondProxyServer;??
- ??
- ????????#charset?koi8-r;??
- ??
- ????????#access_log??logs/host.access.log??main;??
- ??
- ????????#location?/?{??
- ???????????#root???html;??
- ????????????#index??index.html?index.htm;??
- ????????#}??
- ????????location?/?{??
- ????????????proxy_pass?http://localhost:8080;??
- ????????}??
- ??
- ????????#error_page??404??????????????/404.html;??
- ??
- ????????#?redirect?server?error?pages?to?the?static?page?/50x.html??
- ????????#??
- ????????error_page???500?502?503?504??/50x.html;??
- ????????location?=?/50x.html?{??
- ????????????root???html;??
- ????????}??
- ??
- ????????#?proxy?the?PHP?scripts?to?Apache?listening?on?127.0.0.1:80??
- ????????#??
- ????????#location?~?\.php$?{??
- ????????#????proxy_pass???http://127.0.0.1;??
- ????????#}??
- ??
- ????????#?pass?the?PHP?scripts?to?FastCGI?server?listening?on?127.0.0.1:9000??
- ????????#??
- ????????#location?~?\.php$?{??
- ????????#????root???????????html;??
- ????????#????fastcgi_pass???127.0.0.1:9000;??
- ????????#????fastcgi_index??index.php;??
- ????????#????fastcgi_param??SCRIPT_FILENAME??/scripts$fastcgi_script_name;??
- ????????#????include????????fastcgi_params;??
- ????????#}??
- ??
- ????????#?deny?access?to?.htaccess?files,?if?Apache's?document?root??
- ????????#?concurs?with?nginx's?one??
- ????????#??
- ????????#location?~?/\.ht?{??
- ????????#????deny??all;??
- ????????#}??
- ????}??
- ??
- ????#?another?virtual?host?using?mix?of?IP-,?name-,?and?port-based?configuration??
- ????#??
- ????#server?{??
- ????#????listen???????8000;??
- ????#????listen???????somename:8080;??
- ????#????server_name??somename??alias??another.alias;??
- ??
- ????#????location?/?{??
- ????#????????root???html;??
- ????#????????index??index.html?index.htm;??
- ????#????}??
- ????#}??
- ??
- ??
- ????#?HTTPS?server??
- ????#??
- ????#server?{??
- ????#????listen???????443?ssl;??
- ????#????server_name??localhost;??
- ??
- ????#????ssl_certificate??????cert.pem;??
- ????#????ssl_certificate_key??cert.key;??
- ??
- ????#????ssl_session_cache????shared:SSL:1m;??
- ????#????ssl_session_timeout??5m;??
- ??
- ????#????ssl_ciphers??HIGH:!aNULL:!MD5;??
- ????#????ssl_prefer_server_ciphers??on;??
- ??
- ????#????location?/?{??
- ????#????????root???html;??
- ????#????????index??index.html?index.htm;??
- ????#????}??
- ????#}??
- ??
- }??
其中主要的是有兩個server,每個server對應的被代理的服務器的不同。從而實現了nginx代理多個服務器的目的。
下面是兩個服務server的配置:
- server?{??
- ????????listen???????9922;??
- ????????server_name??firstProxyServer;??
- ??
- ????????#charset?koi8-r;??
- ??
- ????????#access_log??logs/host.access.log??main;??
- ??
- ????????#location?/?{??
- ???????????#root???html;??
- ????????????#index??index.html?index.htm;??
- ????????#}??
- ????????location?/?{??
- ????????????proxy_pass?http://localhost:8989;??
- ????????}??
- ??
- ????????#error_page??404??????????????/404.html;??
- ??
- ????????#?redirect?server?error?pages?to?the?static?page?/50x.html??
- ????????#??
- ????????error_page???500?502?503?504??/50x.html;??
- ????????location?=?/50x.html?{??
- ????????????root???html;??
- ????????}??
- ??
- ????????#?proxy?the?PHP?scripts?to?Apache?listening?on?127.0.0.1:80??
- ????????#??
- ????????#location?~?\.php$?{??
- ????????#????proxy_pass???http://127.0.0.1;??
- ????????#}??
- ??
- ????????#?pass?the?PHP?scripts?to?FastCGI?server?listening?on?127.0.0.1:9000??
- ????????#??
- ????????#location?~?\.php$?{??
- ????????#????root???????????html;??
- ????????#????fastcgi_pass???127.0.0.1:9000;??
- ????????#????fastcgi_index??index.php;??
- ????????#????fastcgi_param??SCRIPT_FILENAME??/scripts$fastcgi_script_name;??
- ????????#????include????????fastcgi_params;??
- ????????#}??
- ??
- ????????#?deny?access?to?.htaccess?files,?if?Apache's?document?root??
- ????????#?concurs?with?nginx's?one??
- ????????#??
- ????????#location?~?/\.ht?{??
- ????????#????deny??all;??
- ????????#}??
- ????}??
- ??
- ?????server?{??
- ????????listen???????9977;??
- ????????server_name??secondProxyServer;??
- ??
- ????????#charset?koi8-r;??
- ??
- ????????#access_log??logs/host.access.log??main;??
- ??
- ????????#location?/?{??
- ???????????#root???html;??
- ????????????#index??index.html?index.htm;??
- ????????#}??
- ????????location?/?{??
- ????????????proxy_pass?http://localhost:8080;??
- ????????}??
- ??
- ????????#error_page??404??????????????/404.html;??
- ??
- ????????#?redirect?server?error?pages?to?the?static?page?/50x.html??
- ????????#??
- ????????error_page???500?502?503?504??/50x.html;??
- ????????location?=?/50x.html?{??
- ????????????root???html;??
- ????????}??
- ??
- ????????#?proxy?the?PHP?scripts?to?Apache?listening?on?127.0.0.1:80??
- ????????#??
- ????????#location?~?\.php$?{??
- ????????#????proxy_pass???http://127.0.0.1;??
- ????????#}??
- ??
- ????????#?pass?the?PHP?scripts?to?FastCGI?server?listening?on?127.0.0.1:9000??
- ????????#??
- ????????#location?~?\.php$?{??
- ????????#????root???????????html;??
- ????????#????fastcgi_pass???127.0.0.1:9000;??
- ????????#????fastcgi_index??index.php;??
- ????????#????fastcgi_param??SCRIPT_FILENAME??/scripts$fastcgi_script_name;??
- ????????#????include????????fastcgi_params;??
- ????????#}??
- ??
- ????????#?deny?access?to?.htaccess?files,?if?Apache's?document?root??
- ????????#?concurs?with?nginx's?one??
- ????????#??
- ????????#location?~?/\.ht?{??
- ????????#????deny??all;??
- ????????#}??
- ????}??
下面是測試的結果:
首先兩個tomcat中部署兩個服務器:
然后啟動nginx。
cmd下:start nginx
分別訪問這兩個server:
http://localhost:9922/ngtt/
http://localhost:9977/testnnnn/