记录在SUSE Linux安装nginx的历程+添加WAS属性避免转发WAS端口号(详细安装过程)
为何安装nginx
由于本屌做的新项目是小程序、web端两套应用,为了缓解访问压力要实现了负载均衡。架构评审会没有通过使用F5,所以我们使用了nginx。众所周知,F5花钱啊,nginx软负载免费啊。
重新安装Nginx+避免WAS转发9080端口
1、准备操作
(1)介质准备:openssl、zlib、pcre、nginx安装包,均解压完。最好放在同一个目录下,配置nginx模块的时候可以少写些相对路径
(2)环境准备
查看Linux的版本信息(介质最好兼容)
#uname -a 或 #cat /proc/version
检查服务器是否安装了GCC、GCC-C++
#rpm -qa | grep gcc
(若没有出现这些信息需要安装Linux系统对应版本的GCC或GCC-C++,此处不在赘述)
2、开始安装
(1)安装zlib
#cd zlib-1.2.11
#./configure
#make
#make install
(2)安装pcre
#cd pcre-8.43
#./configure
#make
#make install
(3)安装openssl(非必须,https需要用的)
#cd openssl-1.1.1d
#./config
#make
#make install
(4)nginx配置模块
#cd nginx-1.17.5
#./configure --with-pcre=../pcre-8.43 --with-zlib=../zlib-1.2.11 --with-openssl=../openssl-1.1.1d
#make
#make install
ps:当安装配置成功后,会出现nginx的工作目录
3、校验配置文件
此处不再赘述如何配置负载均衡、反向代理等配置了,网上其他大神说的很清楚了(nginx -t 校验nginx.conf配置文件的是否正确,若出现以下提示,则正确)
# /usr/local/nginx/sbin/nginx -t
4、尝试启动
#/usr/local/nginx/sbin/nginx(这是启动nginx服务)
#/usr/local/nginx/sbin/nginx -s reload(重启,有nginx服务的时候,可用此命令)
**注:**一定要先启动nginx服务,再启动nignx。完后查看nginx进程
5、错误解释
(1)nginx绑定80端口失败
#netstat -ntlp
找出占用80端口的进程与进程号,再杀掉占用80端口的进程号
Kill -9 进程号
再次启动nginx服务,并输入。出现以下图片说明80端口被nginx监听了。
#netstat -ntlp
(2)open() “/usr/local/nginx/logs/nginx.pid” failed (2: No such file or directory)
这个错误代表没有启动nignx服务。如果启动了,还是有这个问题,可能之前操作服务器的人,TA思想出了问题。这里需要手写nginx的pid至nginx.pid文件中
。
6、WAS定制属性配置,避免nginx转发附带9080端口
由于nginx会把网络请求代理到应用服务器上,但是本屌配置完毕,每次网络请求都加上了was的端口号9080,正常应该为80。在WAS的管理控制台增加2个属性,问题终于解决了
应用程序服务器 > server1 > Web 容器 > 定制属性
com.ibm.ws.webcontainer.extractHostHeaderPort = true
trusthostheaderport = true
7、HTTPS模块增加
对于使用https的应用,nginx需要增加对https支持的模块。
#./configure --prefix=/usr/local/nginx --with-http_ssl_module
--with-zlib= 路径 --with-openssl=路径(这里是增加的参数,nginx的安装地址、路径需要根据实际情况填写)
**注:**之前的模块也要配置进去,在make
#make
千万千万不能 make install ;否则会把之前已经安装的nginx 覆盖掉!
备份原始的nginx
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
把新程序的nginx覆盖原始的nginx
#cp objs/nginx /usr/local/nginx/sbin/nginx
如果提示“cp:cannot create regular file `/usr/local/nginx/sbin/nginx’: Text file busy”
建议使用如下语句cp
cp -rfp objs/nginx /usr/local/nginx/sbin/nginx
再用nginx -v验证模块配置成功与否,后来就是启动nginx了
8、证书申请与自签
若应用需要使用https协议,需要开通443端口。需要进行域名的申请,证书是可以自签的,并在nginx.conf文件中进行配置。网上有很多自签方法,此处就不详细叙述了。