Nginx可用于服务器的反向代理和负载均衡
环境相关:
操作系统 Linux (CentOS7 64bit 虚拟机启动) 本机 win10 64bit
虚拟机 VirtualBox (version 5.1.18)
远程连接工具 XShell 5 (version 5.0.0046)
服务器 Tomcat (apache-tomcat-7.0.78) × 2
Nginx nginx-1.13.0
步骤:
一、使用XShell 5 远程登录到虚拟机上(虚拟机 ip = 192.168.164.100)
二、利用XShell 集成的 Xftp 将 tomcat 和 nginx 上传到虚拟机中(虚拟机需要预先安装JDK)
三、tomcat配置:
a、tomcat解压到/usr/local/tomcat 目录下 tar -xvf apache-tomcat-7.0.78 -C /usr/local/tomcat
b、将tomcat服务器拷贝一份(模拟反向代理和负载均衡的需要,也可拷贝多份,或者准备多台虚拟机) cp apache-tomcat-7.0.78/ apache-tomcat-7.0.78-2
c、修改apache-tomcat-7.0.78-2服务器的配置信息(端口修改),否则同一台虚拟机下无法同时启动两台tomcat服务器 vim /usr/local/tomcat/apache- tomcat-7.0.78-2/conf/server.xml 修改三处端口信息
......
redirectPort="8443" /> (之前为8080)
......
d、切换到tomcat目录下 cd /usr/local/tomcat ,启动tomcat服务器 ./apache-tomcat-7.0.78/bin/startup.sh ./apache-tomcat-7.0.78-2/bin/startup.sh
e、查看tomcat是否启动,jps 或 ps -ef | grep tomcat
[root@volatile tomcat]# jps
3121 Jps
3109 Bootstrap
3084 Bootstrap
[root@volatile tomcat]# ps -ef | grep tomcat
root 3084 1 8 10:50 pts/0 00:00:05 /usr/bin/java
-Djava.util.logging.config.file=/usr/local/tomcat/apache-tomcat-7.0.78/conf/logging.properties
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048
-Djava.endorsed.dirs=/usr/local/tomcat/apache-tomcat-7.0.78/endorsed
-classpath /usr/local/tomcat/apache-tomcat-7.0.78/bin/bootstrap.jar:/usr/local/tomcat/apache-tomcat-7.0.78/bin/tomcat-juli.jar
-Dcatalina.base=/usr/local/tomcat/apache-tomcat-7.0.78 -Dcatalina.home=/usr/local/tomcat/apache-tomcat-7.0.78
-Djava.io.tmpdir=/usr/local/tomcat/apache-tomcat-7.0.78/temp org.apache.catalina.startup.Bootstrap start
root 3109 1 8 10:50 pts/0 00:00:05 /usr/bin/java
-Djava.util.logging.config.file=/usr/local/tomcat/apache-tomcat-7.0.78-2/conf/logging.properties
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048
-Djava.endorsed.dirs=/usr/local/tomcat/apache-tomcat-7.0.78-2/endorsed
-classpath /usr/local/tomcat/apache-tomcat-7.0.78-2/bin/bootstrap.jar:/usr/local/tomcat/apache-tomcat-7.0.78-2/bin/tomcat-juli.jar
-Dcatalina.base=/usr/local/tomcat/apache-tomcat-7.0.78-2 -Dcatalina.home=/usr/local/tomcat/apache-tomcat-7.0.78-2
-Djava.io.tmpdir=/usr/local/tomcat/apache-tomcat-7.0.78-2/temp org.apache.catalina.startup.Bootstrap start
root 3185 2032 0 10:51 pts/0 00:00:00 grep --color=auto tomcat
f、本机通过http://192.168.164.100:8080和http://192.168.164.100:9080查看是否可正常访问tomcat(这里禁止了虚拟机的防火墙,否则需要修改防火墙配置)
四、nginx配置:
nginx的配置会比tomcat复杂,因为tomcat只需要解压后即可使用,nginx需要先进行安装,安装时还需要检查依赖环境,所以需要虚拟机可以访问互联网,由于这里Linux使用的host-only的网络连接方式,需要进行部分操作方可访问外部网络。
host-only连接外部网络(VirtualBox):
a、VirtualBox会在本机的网络中新建出一个虚拟网卡用于充当虚拟机的网关,将该虚拟网卡设置为自动获取IP地址,然后将本机连接互联网的网卡为虚拟网卡设置共享,这个时候会为虚拟网卡自动分配一个指定的IP地址,可进行修改(修改为Linux的网段网关,如:Linux 192.168.164.100 则 192.168.164.1)
b、修改Linux网络配置文件 vim /etc/sysconfig/network-scripts/ifcfg-enp0s3
bootproto=static
HWADDR=08:00:27:b2:63:05
NM_CONTROLLED=yes
ONBOOT=yes
TYPE=Ethernet
GATEWAY=192.168.164.1
IPADDR=192.168.164.100
NETMASK=255.255.255.0
UUID=d5d33b45-959d-4f17-a101-d630b316179c
其中,IPADDR为本机IP ,GATEWAY为虚拟网卡的IP(即虚拟机网关地址),HWADDR为虚拟机的MAC地址(可通过ifconfig查询到)
vim /etc/resolv.conf 增加 nameserver 192.168.164.1(虚拟机网关地址)
c、systemctl restart network,重启网络服务,使用虚拟机ping www.baidu.com 看是否能连通外部网络
当虚拟机可以访问外部网络后,进行nginx的安装,首先将nginx解压到/usr/local/nginx目录下 tar -xvf nginx-1.13.0.tar.gz -C /usr/local/nginx,然后进入到该目录进行nginx的安装和配置
a、./nginx-1.13.0/configure -prefix=/usr/local/nginx(-prefix=/usr/local/nginx为指定检查依赖环境后nginx的安装位置)
b、运行后会检查出缺少gcc、pcre、zlib环境,依次yum install gcc-c++,yum install pcre-devel,yum install zlib-devel 或者一句指令安装依赖环境
c、依赖环境检查完成后 make && make install 即可安装好nginx
d、./sbin/nginx 启动nginx服务,可通过ps -ef | grep nginx 查看nginx启动情况,然后通过本机访问http://192.168.164.100:80(nginx默认80端口)
e、修改nginx配置文件,实现反向代理和负载均衡 vim conf/nginx.conf
upstream moral{
server 192.168.164.100:8080;
server 192.168.164.100:9080;
}
#(增加处)
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
#root html;
#index index.html index.htm;
proxy_pass http://moral;
}
#(修改处)
#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;
#}
}
f、重启nginx服务器 ./sbin/nginx -s reload,再次通过本机访问http://192.168.164.100:80 (nginx默认端口)可发现请求会在两个tomcat服务器之间切换(可通过修改tomcat-2的index.jsp页面直观的看出nginx访问这两台tomcat服务器的切换操作)
五、关闭tomcat服务器和nginx服务器
nginx服务器关闭:
a、ps -ef | grep nginx 查找到nginx服务启动的进程号
b、kill -quit 进程号 关闭nginx服务器
tomcat服务器关闭:
a、cd /usr/local/tomcat 切换到tomcat目录
b、运行 ./apache-tomcat-7.0.78/bin/shutdown.sh和./apache-tomcat-7.0.78-2/bin/shutdown.sh关闭两台tomcat服务器