nginx配置:
#Nginx所用用户和组,window下不指定
#user niumd niumd;
#工作的子进程数量(通常等于CPU数量或者2倍于CPU)
worker_processes 2;
#错误日志存放路径
#error_log logs/error.log;
#error_log logs/error.log notice;
error_log logs/error.log info;
#指定pid存放文件
pid logs/nginx.pid;
events {
#使用网络IO模型linux建议epoll,FreeBSD建议采用kqueue,window下不指定。
#use epoll;
#允许最大连接数
worker_connections 2048;
}
http {
include 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 off;
access_log logs/access.log;
client_header_timeout 3m;
client_body_timeout 3m;
send_timeout 3m;
client_header_buffer_size 1k;
large_client_header_buffers 4 4k;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
#keepalive_timeout 75 20;
#include gzip.conf;
upstream localhost{
#Nginx是如何实现负载均衡的,Nginx的upstream目前支持以下几种方式的分配
#1、轮询(默认)
#每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
#2、weight
#指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况,server localhost:8086 weight=10; 。
#2、ip_hash
#每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
#3、fair(第三方)
#按后端服务器的响应时间来分配请求,响应时间短的优先分配。
#4、url_hash(第三方)
#按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
#ip_hash;
server localhost:8086;
server localhost:8088;
}
server {
listen 80;
server_name localhost;
location / {
proxy_connect_timeout 3; #nginx跟后端服务器连接超时时间(代理连接超时)
proxy_send_timeout 30; #后端服务器数据回传时间(代理发送超时)
proxy_read_timeout 30; #连接成功后,后端服务器响应时间(代理接收超时)
proxy_pass http://localhost;
}
}
}
tomcat配置:
tomcat服务器端口号server localhost:8086; server localhost:8088;
修改完配置文件后需要通过重新加载配置问来来使其生效:
nginx -s reload 是直接加载nginx.conf文件,并不检测nginx.conf文件是否有错误。
nginx -t 则会检查nginx.conf文件是否有错,并会现实相关错误信息,所以建议用此命令。
在浏览器中输入localhost,即可看到结果
可能遇到的问题:
由于端口冲突,当我们在Nginx配置文件中默认设置listen 80端口时,可能无法实现反向代理的功能,也就是我们在浏览器中输入localhost的时候无法跳转到Tomcat的主页,解决方法有两个:
1.修改Nginx配置文件中listen的端口号,设置为其他端口,比如说9090,这时在浏览器中输入localhost:9090就可以实现跳转。
2.既然80端口被占用了,那我们只需要释放这个端口就好了,cmd->netstat -ano 80 查看80端口被占用的情况:
结果发现都是nginx.exe 本身,那就不能通过kill pid是释放这个端口啦。
后来百度发现原来这个端口还被system占用,解决的办法:进入注册表中
找到HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/HTTP下的Start修改其值为0,然后重启电脑,重启电脑,重启电脑,重要的事情说三遍!!