监听自己的portA(应用可以自定义进入程序的port)
服务器B的ipA:portA 服务器A的serve_name(nginx的宿主机)
服务器A--------------------------------->服务器A---------------------------->转发
虚拟域名<=>服务器B的ipA:portA
客户端通过域名访问服务器时会将域名与被解析的ip一同放在请求中。当请求到了nginx中时。nginx会先去匹配ip,如果listen中没有找到对应的ip,就会通过域名进行匹配,匹配成功以后,再匹配端口。当这三步完成,就会找到对应的server的location对应的资源。
总结:
nginx的serve_name的值一定是宿主机的ip, |
动静分离:
访问:http://localhost/项目名称
server {
listen 80;
server_name localhost;
location / {
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_pass http://localhost:8082;
# 真实的客户端IP
proxy_set_header X-Real-IP $remote_addr;
# 请求头中Host信息
proxy_set_header Host $host;
# 代理路由信息,此处取IP有安全隐患
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 真实的用户访问协议
proxy_set_header X-Forwarded-Proto $scheme;
}
#静态文件交给nginx处理
location ~ .*\.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|
zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$
{
root /static; //static目录在nginx目录下,与conf同级
expires 30d;
}
#静态文件交给nginx处理
location ~ .*\.(js|css)?$
{
root /static; //static目录在nginx目录下,与conf同级
expires 1h;
}
#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;
}
}