nginx安装与配置
环境:在笔记本上的vmware中安装的centos7.6
nginx安装
使用root用户操作
1.安装yum-utils
yum install yum-utils
2.新建/etc/yum.repos.d/nginx.repo文件,内容如下
#vi /etc/yum.repos.d/nginx.repo
[root@localhost ~]# cat /etc/yum.repos.d/nginx.repo
[nx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
3.配置mainline nginx
yum-config-manager --enable nginx-mainline
4.安装nginx
yum install nginx
5.查看状态,重启nginx
service nginx status //查看nginx状态
service nginx restart //重启nginx
nginx配置
1.修改/etc/nginx/nginx.conf配置文件,负载两个tomcat
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/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 /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
upstream nginxDemo {
server 192.168.64.1:8081; #服务器地址1
server 192.168.64.1:8082; #服务器地址2
}
server {
listen 80; #nginx端口
location / {
proxy_pass http://nginxDemo;
}
}
include /etc/nginx/conf.d/*.conf;
}
2.重启nginx
systemctl nginx restart
3.打开浏览器,输入:http://192.168.10.151,报502 Bad Gateway
Nginx问题
问题
安装配置好nginx后,报502 Bad Gateway,如上图所示,查看/var/log/nginx/error.log,报错信息如下
2019/09/23 07:34:18 [crit] 7492#7492: *1 connect() to 192.168.64.1:8081 failed (13: Permission denied) while connecting to upstream, client: 127.0.0.1, server: , request: "GET / HTTP/1.1", upstream: "http://192.168.64.1:8081/", host: "127.0.0.1"
2019/09/23 07:34:18 [warn] 7492#7492: *1 upstream server temporarily disabled while connecting to upstream, client: 127.0.0.1, server: , request: "GET / HTTP/1.1", upstream: "http://192.168.64.1:8081/", host: "127.0.0.1"
2019/09/23 07:34:18 [crit] 7492#7492: *1 connect() to 192.168.64.1:8082 failed (13: Permission denied) while connecting to upstream, client: 127.0.0.1, server: , request: "GET / HTTP/1.1", upstream: "http://192.168.64.1:8082/", host: "127.0.0.1"
2019/09/23 07:34:18 [warn] 7492#7492: *1 upstream server temporarily disabled while connecting to upstream, client: 127.0.0.1, server: , request: "GET / HTTP/1.1", upstream: "http://192.168.64.1:8082/", host: "127.0.0.1"
解决问题:
网上查到是需要关闭SeLinux,以下两种解决方案
1.先执行以下命令,关闭
setsebool -P httpd_can_network_connect 1
2.修改配置文件,然后重启机器:
修改/etc/selinux/config 文件
将SELINUX=enforcing改为SELINUX=disabled
4.关闭SeLinux后,tomcat集群搭建完毕,测试调用http://192.168.10.151,发现库存有减少
jmeter压力测试
1.双击“jmeter.bat”,“Add”-"Threads"-"Thread Group",如下图所示
2.添加“HTTP Request”,如下图所示
3.配置并发线程数,200个请求
4.http request地址为:http://192.168.10.151/deduct_lock
5.配置完成后进行压力测试,经过nginx代理转发到两台tomcat,会出现重复扣减的值,导致库存超卖;synchronized锁为JVM锁,在分布式环境(多台应用服务器)下无法保持同步执行