您的位置:首页 > 运维架构 > Nginx

Nginx配置总结

2015-09-07 18:33 671 查看
修改nginx服务器配置,在conf文件下的nginx.conf文件。

#user nobody;   #运行用户
#worker_processes 1;    #启动进程数,通常设置成和cpu数目相同
#error_log /var/log;    #错误日志
events {
worker_connections 1024;#单个后台work process进程最大并发链接数
}

#设定http服务器
http{
#设定mime类型,类型由mime.type文件定义
include       /etc/nginx/mime.types;
default_type  application/octet-stream;
#设定日志格式
access_log    /var/log/nginx/access.log;
sendfile on;
#连接超时时间
#keepalive_timeout  0;
keepalive_timeout  65;
tcp_nodelay        on;

#集群中的所有后台服务器的配置信息,用于负载均衡
upstream local_tomcat{
server 192.168.0.111:80;
server 192.168.0.109:8080;
}
server{
listen 8090;    #当前代理服务器监听端口
server_name  localhost:80;  #监听后要转到地址
#charset koi8-r;
#access_log  logs/host.access.log  main;

location / {    #location表示匹配路径,/表示所有请求
root   html;  #静态文件存放的路径
index  index.html index.htm;  #没有主页时,此为主页,可多个
}

#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;
}
}
}


常见问题总结:

1. nginx+tomcat影响request值

request.getScheme() //总是 http,而不是实际的http或https

request.isSecure() //总是false(因为总是http)

request.getRemoteAddr() //总是 nginx 请求的 IP,而不是用户的IP

request.getRequestURL() //总是 nginx 请求的URL 而不是用户实际请求的 URL

request.getServerName //总是nginx请求的ip

request.getServerPort //总是nginx请求的端口

response.sendRedirect( 相对url ) //总是重定向到 http 上 (因为认为当前是 http 请求)

解决方法:

修改nginx配置:

proxy_set_header Host $host;   #解决getRequestURL、getServerName、getServerPort问题
proxy_set_header X-Real-IP $remote_addr;#把真实的ip发送给转发的web服务器
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;#解决request.getScheme()只能返回http而不是https问题


配置tomcat的server.xml的Engine模块,配置一个value

< Valve className="org.apache.catalina.valves.RemoteIpValve" remoteIpHeader="X-Forwarded-For"
protocolHeader="X-Forwarded-Proto" protocolHeaderHttpsValue="https" />
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  nginx