1.我們只要實現訪問nginx服務器能跳轉到不同的服務器即可,我本地測試是這樣的,
在nginx服務器里面搭建了2個tomcat,2個tomcat端口分別是8080和8081,當我輸入我nginx服務器ip的時候它會跳轉到8080或者8081端口,實現一個入口對應多台web服務器的功能,在大型項目中,web服務器是多台的,當某一台服務器掛掉的時候,程序還能夠正常的運行,提升系統的健壯性和用戶體驗。
安裝配置nginx服務器在我的博客里面已經存在了,nginx配置的說明也有,現在簡單的配置一下給大家體驗下。
nginx配置文件中需要配置一個hostname就是本機的名稱
我們改一下 命令如下
hostname aly.com(這台命令是改了本機名稱會立刻生效,或者在您的etc/hosts文件夾里面修改也可以,不過我上次改了一下hosts文件夾里面的信息,沒有立刻生效,故而用這個命令)
#這個是我初次搭建nginx服務器的配置文件 一個很簡單的配置文件
#
user root root;
#cpu的核心數 看cpu的核心數可以執行一下命令
# grep 'core id' /proc/cpuinfo | sort -u | wc -l worker_processes 1; #全局錯誤日志定義類型,[ debug | info | notice | warn | error | crit ] error_log logs/error.log info;
#進程文件 pid logs/nginx.pid; #工作模式與連接數上限
events { use epoll;
#單個進程最大連接數(最大連接數=連接數*進程數)配置成linxu打開最大文件數量,看linux打開最大文件數命令 ulimi -n worker_connections 65535; } #設定http服務器 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;#開啟高效文件傳輸模式,sendfile指令指定nginx是否調用sendfile函數來輸出文件,對於普通應用設為 on,如果用來進行下載等應用磁盤IO重負載應用,
#可設置為off,以平衡磁盤與網絡I/O處理速度,降低系統的負載。注意:如果圖片顯示不正常把這個改成off。 #防止網絡阻塞
#tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65;#長連接超時時間,單位是秒 #gzip on;
#這里的aly.com就是我的本機機器的名稱而不是ip
#upstream的負載均衡,weight是權重,可以根據機器配置定義權重。weigth參數表示權值,權值越高被分配到的幾率越大。 upstream aly.com { server 120.25.153.204:8080 weight=3;#tomcat 8080端口 server 120.25.153.204:8081 weight=1;#tomcat 8081端口 } server { listen 80;#監聽端口 server_name aly.com;#域名可以有多個,用空格隔開 charset utf-8;#編碼格式 #access_log logs/host.access.log main; #對 "/" 啟用反向代理 location / { proxy_pass http://aly.com;# 必須要加 http 開頭,訪問的就是此地址 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #log_format aly.com '$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 aly.com; #root html; #index index.html index.htm; } #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; # } #} }
以上配置即可,我測試過可以的,訪問同一個地址的時候有時候會跳轉到我的8080端口有的會跳轉到8081端口
我的服務器ip是120.25.153.204


2個圖片輸入的ip都是一樣的可是顯示的結果不一樣,做的不一樣是為了區別是否能夠訪問多個web服務器,
通過nginx反向代理跳轉到不同的端口,也可以跳轉到 不同ip或者相同ip/相同或者不同的端口
注意:當我關閉任意一個端口服務的時候,我輸入ip的時候不會照成地址訪問不了的情況。
[root@iZ94j7ahvuvZ conf]# ps -ef|grep tomcat root 7666 1 0 13:56 pts/0 00:00:07 /usr/local/java/jdk1.7.0/jre/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/tomcat-8080/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/usr/local/tomcat/tomcat-8080/endorsed -classpath /usr/local/tomcat/tomcat-8080/bin/bootstrap.jar:/usr/local/tomcat/tomcat-8080/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat/tomcat-8080 -Dcatalina.home=/usr/local/tomcat/tomcat-8080 -Djava.io.tmpdir=/usr/local/tomcat/tomcat-8080/temp org.apache.catalina.startup.Bootstrap start root 7720 1 0 13:58 pts/0 00:00:08 /usr/local/java/jdk1.7.0/jre/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/tomcat-8081/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/usr/local/tomcat/tomcat-8081/endorsed -classpath /usr/local/tomcat/tomcat-8081/bin/bootstrap.jar:/usr/local/tomcat/tomcat-8081/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat/tomcat-8081 -Dcatalina.home=/usr/local/tomcat/tomcat-8081 -Djava.io.tmpdir=/usr/local/tomcat/tomcat-8081/temp org.apache.catalina.startup.Bootstrap start root 7811 2233 0 14:53 pts/0 00:00:00 grep tomcat [root@iZ94j7ahvuvZ conf]# kill 7666
如我kill掉了 7666也就是我的8080端口PID進程,訪問ip120.25.153.204還是能夠正常訪問,提到了用戶體驗

