我們上一節(jié)說到只有一個nginx處事器,所以用戶會見處事器是顛末nginx的,由nginx按照URL法則指向用戶去會見誰人處事器,同時我們也說到,這樣的處事器設(shè)計的漏洞就是,當改nginx高出了負載的壓力的時候,nginx就不在事情,這樣就導致用戶無法舉辦相應(yīng)的操縱了。為了使各人越發(fā)容易領(lǐng)略,我把圖片從頭畫了一下,如下圖
由上圖可以看到,用戶進入顛末nginx,然后只要我們對nginx設(shè)置相應(yīng)的法則,讓它去轉(zhuǎn)發(fā)到差異的處事器。這里我們給出三個匹配法則來舉辦處理懲罰,假如url是包括有l(wèi)ogin的則會轉(zhuǎn)發(fā)到192.168.1.101可能是192.168.1.102這兩臺呆板,好比是雖然你假如只有一臺呆板的話,也可以填寫一個IP地點。好比是碰著http://api.yeehot.com/login/api/qq,那么會按照權(quán)重,用戶會見到192.168.1.101可能192.168.1.102處事器。
相識了nginx的轉(zhuǎn)發(fā)法則之后我們應(yīng)該如何設(shè)置nginx,上一節(jié)我們已經(jīng)說過如何安裝nginx了,在安裝后,我們可以對nginx舉辦設(shè)置,假如安裝我上一節(jié)的nginx版本以及安裝路徑的話,我們的設(shè)置文件會在/usr/nginx-1.10.0/conf/nginx.conf,必然要留意的是不是我們解壓的誰人文件的設(shè)置文件,
我們可以輸入vi /usr/nginx-1.10.0/conf/nginx.conf,打開nginx.conf,這里我為了可以讓各人利便閱讀,把Nginx的設(shè)置做了一個說明,
#user nobody;
#歷程數(shù),界說了nginx執(zhí)行時的歷程數(shù)
worker_processes 4;
#變動worker歷程的最大打開文件數(shù)限制
worker_rlimit_nofile 65535;
#錯誤日志
error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
# nginx毗連的配置。
events {
use epoll;
worker_connections 65535;
}
http {
#------------------Nginx后端處事器設(shè)置,這里我利用默認的輪詢請求方法------------------
#登岸后端處事器設(shè)置,設(shè)置法則是, ip:port,#weight,代表權(quán)重,權(quán)重越大,代表會見到改IP的處事器的幾率越大。
upstream loginserver {
server 192.168.1.101:8080 weight=50;
server 192.168.1.102:8080 weight=50;
}
#評論后端處事器設(shè)置
upstream commentserver {
server 192.168.1.103:8080 weight=50;
server 192.168.1.104:8080 weight=50;
}
#談天后端處事器設(shè)置
upstream chatserver {
server 192.168.1.105:8080 weight=50;
server 192.168.1.106:8080 weight=50;
}
#-----------------Nginx后端處事器設(shè)置竣事-------------------------------------------
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 {
#監(jiān)聽的端口,80
listen 80;
#轉(zhuǎn)發(fā)的域名,按照這個域名來轉(zhuǎn)發(fā)下面的法則
server_name api.yeehot.com;
#字符集
charset utf-8;
#生存路徑
root /mnt/yeehot;
index index.html index.htm index.php;
#默認的會見解點
location / {
index index.html index.htm;
}
#轉(zhuǎn)發(fā)法則,當URL碰著login的時候,會轉(zhuǎn)發(fā)到loginserver
location /login {
proxy_pass http://loginserver;
}
location /comment {
proxy_pass http://commentserver;
}
location /chat {
proxy_pass http://chatserver;
}
#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;
}
}
}
以上的設(shè)置,主要是后端處事器的設(shè)置,端口的監(jiān)聽,域名的設(shè)置,已經(jīng)url轉(zhuǎn)發(fā)法則的設(shè)置,設(shè)置好后,我們還需要重啟nginx,輸入指令,nginx -s reload
spring mvc+tomcat的設(shè)置
我們這里假設(shè)用戶已經(jīng)打包好了springmvc項目包,以及安裝好tomcat的環(huán)境下,由于spirng mvc包只是運行在tomcat處事器下的,這樣我們只需要對我們的tomcat舉辦設(shè)置就可以了
我們打開tomcat的conf/server.xml,找到Host name="localhost" appBase="webapps",這一段代碼,而且修改成如下的
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
<--添加以下這一項代碼,docBase是項目標路徑-->
<Context docBase="/Users/yeehot/Downloads/apache-tomcat-7.0.69/webapps/YeehotProgramKing" path="" debug="0" reloadable="false" />
</Host>
以上設(shè)置目標就是將tomcat配置成默認會見的目次,,好比是本來需要會見的地點是
http://api.yeehot.com:8080/YeehotProgramKing/login/api/qq
此刻只需要會見http://api.yeehot.com:8080/login/api/qq
由于我們方才設(shè)置nginx的時候設(shè)置后端處事器是如下的名目
upstream loginserver {
server 192.168.1.101:8080 weight=50;
server 192.168.1.102:8080 weight=50;
}