Nginx
Nginx
课程简介(负载均衡)
1、Nginx安装与配置
2、Nginx和Tomcat整合及负载均衡
Nginx概述与安装
Nginx概述
Nginx是一款高性能的、轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上Nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用Nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
官网地址:http://Nginx.org/
(1) :使用yum安装nginx,安装nginx库
rpm -af|grep nginx: 检索当前环境是否安装了nginx
安装nginx包
rpm -Uvh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
(2):使用下面命令安装nginx
yum -y install nginx
(3):启动nginx
service nginx start #centos6
(4):防火墙允许通过80端口
复制代码
vim /etc/sysconfig/iptables
# Generated by iptables-save v1.4.7 on Thu Dec 28 19:47:19 2017
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [21691:949300]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
复制代码
(5):重启防火墙
service iptables restart
8、访问测试
http://IP
出现以上画面,证明Nginx已经正常启动了。
部署Nginx+Tomcat集群
安装第1套Tomcat
1:上传Tomcat到linux上
2:解压Tomcat到/usr/local下
tar -xvf apache-tomcat-8.5.15.tar.gz -C /usr/local
3:修改解压缩后的Tomcat文件夹名字
mv /usr/local/apache-tomcat-8.5.15 /usr/local/tomcat1
4:修改第一套Tomcat配置文件
vi /usr/local/tomcat1/conf/server.xml
//按下 i 键进入编辑状态
找到8080这个端口号,修改为8081:
<Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> |
找到8009这个端口号,修改为8010:
<!-- Define an AJP 1.3 Connector on port 8009 --> <Connector port="8010" protocol="AJP/1.3" redirectPort="8443" /> |
找到节点Engine,增加内容 jvmRoute="jvm1"
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1"> |
//替换完成后按下Esc,然后按下shift+;,输入wq保存退出
5:启动Tomcat服务器1
cd /usr/local/tomcat1/bin
启动命令:./startup.sh
注意:如果不能正常启动,需要修改 :vi /etc/hosts
增加:
127.0.0.1 apache-tomcat //主机名字,请使用命令 hostname查找
6:测试服务器是否正常启动
打开浏览器输入http://服务器地址:8081
看是否能浏览到TOMCAT欢迎页面。
安装第2套Tomcat。
1:上传Tomcat到linux上
2:解压Tomcat到/usr/local下
tar -xvf apache-tomcat-8.5.15.tar.gz -C /usr/local
3:修改解压缩后的Tomcat文件夹名字
mv /usr/local/apache-tomcat-8.5.15 /usr/local/tomcat2
4:修改第2套Tomcat配置文件
vi /usr/local/tomcat2/conf/server.xml
//按下 i 键进入编辑状态
找到8080这个端口号,修改为8082:
<Connector port="8082" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> |
找到8009这个端口号,修改为8011:
<!-- Define an AJP 1.3 Connector on port 8009 --> <Connector port="8011" protocol="AJP/1.3" redirectPort="8443" /> |
找到8005这个端口号,修改为9005:
<Server port="9005" shutdown="SHUTDOWN"> |
找到节点Engine,增加内容 jvmRoute="jvm2"
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm2"> |
//替换完成后按下Esc,然后按下shift+;,输入wq保存退出
5: 启动Tomcat服务器2
cd /usr/local/tomcat2/bin
启动命令:./startup.sh
6: 测试服务器是否正常启动
打开浏览器输入http://服务器地址:8082
看是否能浏览到TOMCAT欢迎页面。
配置Nginx负载均衡。
1、修改Nginx配置文件
vi /etc/nginx/conf.d/default.conf
upstream www { server 10.10.22.161:8081; server 10.10.22.161:8082; } server { listen 80; server_name localhost; #charset koi8-r; #access_log /var/log/nginx/log/host.access.log main; location / { root /usr/share/nginx/html; index index.html index.htm; proxy_pass http://www; }
#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 /usr/share/nginx/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; #} } |
https://blog.csdn.net/wangfei0904306/article/details/72834286
setsebool -P httpd_can_network_connect 1
Nginx+Tomcat动静分离测试
部署jsp文件
在2套Tomcat上部署JSP
部署路径如下:
服务器1:/usr/local/tomcat1/webapps/ROOT
服务器2:/usr/local/tomcat2/webapps/ROOT
文件名1.jsp
<%@ pageimport="java.util.*,java.text.*" %> <html> <head> <title> Session Test</title> </head> <body > <% Date dNow = new Date( ); SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss"); out.print( "<h2 align=\"center\">" + ft.format(dNow) + "</h2>"); %>
<h3>pic<h3/> <img src="1.jpg"/> </body> </html> |
同时上传1.jpg到2台Tomcat服务器和1.jsp放同一文件夹。
测试JSP
浏览器访问apache所在的主机IP地址:http://IP/, 显示如图一所示页面,图片可以正常显示。
配置Nginx动静分离
1、修改Nginx配置文件
vi /etc/nginx/conf.d/default.conf
upstream www{ server 192.168.22.83:8081; server 192.168.22.83:8082; } server { listen 80; server_name localhost;
#charset koi8-r; #access_log /var/log/nginx/log/host.access.log main;
location / { root /usr/share/nginx/html; index index.html index.htm; proxy_pass http://www;
} location ~ \.(html|css|js|gif|jpg|jpeg|png|bmp|swf)$ { root /usr/share/nginx/html; }
location ~ \.(jsp|do|action)$ { proxy_pass http://www; }
#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 /usr/share/nginx/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; #} }
|
重启Nginx
浏览器访问nginx所在的主机IP地址:http://IP/, 显示如图而所示页面,图片不能正常显示了
在Nginx服务器的WEB目录上传1.jpg
/usr/share/nginx/html/1.jpg
在此浏览,图片可以正常显示了!
Nginx+Tomcat集群负载均衡测试
Nginx负载均衡策略
1、轮询(默认)
每个web请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
upstream 名字 {
server 127.0.0.1:8081;
server 127.0.0.1:8082;
}
2、weight 权重
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况,weight默认是1。
#服务器A和服务器B的访问比例为:2-1;比如有3个请求,前两个会访问A,三个访问B,其它规则和轮询一样。
upstream nginxDemo {
server 127.0.0.1:8081 weight=2; #服务器A
server 127.0.0.1:8082; #服务器B
}
3、ip_hash
每个请求按访问ip的hash值分配,这样同一客户端连续的Web请求都会被分发到同一服务器进行处理,可以解决session的问题。当后台服务器宕机时,会自动跳转到其它服务器。
upstream nginxDemo {
ip_hash;
server 127.0.0.1:8081 weight=2; #服务器A
server 127.0.0.1:8082; #服务器B
}
解决session共享问题
利用redis !!
因为 session 是键值对
而redis 恰好是以键值对形式进行存储.....