Nginx+Tomcat无法正确获取的域名和ip地址
在利用Nginx作为反向代理服务器的时候,出现一个问题,就是在Tomcat中的web项目获取当前访问域名地址的时候,无法获取到真实的域名或IP地址,进过一系列摸索,最终找到解决办法。
之前的Nginx配置:
server {
listen 80;
server_name 二级域名;
autoindex off;
location / {
root /da/www/webapps;
index index.html index.jsp;
proxy_pass http://127.0.0.1:8080;
}
}
之后的Nginx配置:
server {
listen 80;
server_name 二级域名;
autoindex off;
location / {
root /da/www/webapps;
index index.html index.jsp;
proxy_pass http://localhost:8080;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
配置详解:
proxy_set_header Host $http_host; # 将当前Host头域值填充成客户端地址
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 代理路由信息,此处取ip有安全隐患
proxy_set_header X-Forwarded-Proto $scheme; # 真实用户访问协议
proxy_set_header X-Real-IP $remote_addr; # 真实用户IP