根据域名转发请求
由于公网ip资源有限,需要将多个域名解析到同一个ip的80端口上,再由nginx根据域名转发到对应的服务器上。
nginx配置
在conf文件下新建vhost目录(以后所有转发规则都可以放在这里面),新建proxy.conf文件,并定义server:
server{
listen 80;
server_name aaa.com www.aaa.com; # 要转发的源域名
location / {
proxy_pass http://127.0.0.1:8080/demo/; # 转发目标
index index.php index.html index.htm;
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_cookie_path / /; # 关键配置
}
error_page 500 502 503 504 /50x.html;
}
然后,在nginx.conf的http节点下加上:
···
include vhost/proxy.conf;
···
就配好了。要对多个服务做转发可以在这个文件写多个server,也可以另外新建文件来写。
此时,访问aaa.com,就会访问到127.0.0.1:8080/demo项目。
session
访问后,发现session在转发的过程中丢失了。你没告诉nginx,显然它是不会帮你把这个工作做了的。
只需要在server节点加上配置:
server{
listen 80;
server_name aaa.com www.aaa.com; # 要转发的源域名
location / {
proxy_pass http://127.0.0.1:8080/demo/; # 转发目标
index index.php index.html index.htm;
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_cookie_path / /; # 关键配置
}
error_page 500 502 503 504 /50x.html;
}
proxy_cookie_path 后面的两个斜杠表示将源访问地址的“/”路径的cookie复制到目标地址的“/”路径。
nginx -s reload 后就可以正常访问了。