以前安装nginx是在Centos6.5上,用自动化脚本安装依赖和nginx一直都很顺利,现在在Centos8.2上不能正常运行,自己研究了下怎么搭建nginx环境和反向代理Tomcat,遇到了一些坑,现在把成功搭建的过程简单记录下。
环境:Centos 8.2 64位
pcre:pcre-8.44,安装包:链接:https://pan.baidu.com/s/1vmrRsZ7gu2TK9B7uym_wVg ,提取码:oe7p
nginx:nginx-1.19.4.tar.gz,安装包:链接:https://pan.baidu.com/s/1pOPfEiUr10bFsUUXilv0wg ,提取码:5m2a
安装gcc
yum -y install gcc automake autoconf libtool make
安装g++
yum install gcc gcc-c++ 安装时系统会提示:Is this ok [y/N],输入y进行确认
安装pcre
将pcre-8.44.zip包上传到/usr/local/src目录下,执行如下命令:
解压:unzip pcre-8.44.zip
进入解压后的目录:cd ./pcre-8.44/
./configure
make && make install
安装zlib库
进入到/usr/local/src目录下,执行如下命令:
wget http://zlib.net/zlib-1.2.11.tar.gz
tar -zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure
make && make install
安装openssl
yum -y install openssl openssl-devel
安装nginx
将nginx-1.19.4.tar.gz包上传到/usr/local/src目录下,执行如下命令:
tar zvxf nginx-1.19.4.tar.gz
cd ./nginx-1.19.4/
./configure --prefix=/home/server/nginx/ 指定安装到/home/server/nginx目录下
make && make install
启动nginx
进入/home/server/nginx/sbin/(nginx的安装路径)目录下,执行./nginx命令,启动nginx,通过命令:ps -ef | grep nginx,查看有没有nginx的相关进程检查nginx有没有启动成功,如下图所示。
或者在前端通过ip+端口进行访问(在nginx/conf/nginx.conf中进行配置,默认端口为80),如果通过ps -ef | grep nginx命令能够看到上述启动的进程,但是前端无法成功访问,阿里云服务器需要检查安全组策略中80端口(具体要看配置的哪个端口,通常是80端口)有没有开放,其它自己搭建的服务器要检查下防火墙,正常访问页面如下所示。
nginx反向代理Tomcat
nginx要实现Tomcat的反向代理,需要在nginx.conf文件中进行配置,修改前配置如下所示。
用多个tomat部署了同一个项目,想要实现反向代码配置如下所示:
srver上新增:
upstream teach_tomcat{
#ip_hash;
server ip:8080 weight=100 max_fails=2 fail_timeout=30s;
server ip:8090 weight=100 max_fails=2 fail_timeout=30s;
}
location下新增
proxy_pass http://teach_tomcat; proxy_pass后http://后的名字要和upstream后的名字保持一致
保存后,进入到sbin目录执行./nginx -s reload命令重启nginx,
配置保存成功后,进入到sbin目录通过./nginx -s reload重启nginx,就可以去掉端口进行访问啦,要想知道具体是访问的哪个Tomcat,需要在nginx.conf配置文件中location下新增:
add_header backendIP $upstream_addr;
add_header backendCode $upstream_status;
在nginx.conf文件中进行配置的时候,一定不能用tab键,需要用空格进行缩进,要不就会遇到类似错误:nginx: [emerg] unknown directive in /etc/nginx/conf.d/test.conf:51。
配置新增成功后,重启nginx,多次访问项目,可以看到请求中的端口是在不停变化的,默认方式是轮寻,如下图所示。