web服务器程序有很多,tomcat,apache,php以及很多小型的、便捷型的web服务程序,然而80端口只有一个,于是让nginx做代理转发到各个程序成了一种解决方案。
nginx 代理某web服务端口的基本配置如下:
server{
listen 80;
server_name localhost;
location / {
proxy_pass http://localhost:8080;
proxy_redirect default;
}
}
server{ #一个虚拟服务器配置开始
listen 80; #监听真实服务器的80端口
server_name localhost; #服务器地址
location / { #响应来源位置配置开始
proxy_pass http://localhost:8080; #转发传递到的位置
proxy_redirect default; #代理重定向配置为默认
} #响应来源位置配置完成
} #一个虚拟服务器配置完成
#注意,这样配置的转发将会导致最终处理请求的服务器程序获取不到原始请求中的部分信息,例如用户真正的ip会变成本机ip,因为程序收到的请求是来自本机nginx发来的。
为了将请求的ip等头信息发送给服务器程序,可以在nginx配置文件增加头信息,转发到服务程序中:
server
{
listen 80;
server_name localhost;
location /
{
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:8080;
}
location ~ .*\.(php|jsp|cgi|asp|aspx|flv|swf|xml)?$
{
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://localhost:8080;
}
access_log /www/wwwlogs/xxx.com.log;
}