重定向
反向代理:
try_files $uri @pro;
location @pro {
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 https://www.jianshu.com/u/8f36a5e63d18;
}
说明:
1、访问www.example.com/123.html(文件存在)时,此时看到的是123.html内容,URL地址不变
2、访问www.example.com/post-3647.html(文件不存在)时,此时看到的是江边城外的博客的内容,URL地址不变
location /whsir/ {
try_files $uri @ab;
}
location @ab {
rewrite ^/(.*)$ https://www.jianshu.com/u/8f36a5e63d18;
}
说明:
1、访问www.example.com/whsir/123.html(文件存在)时,此时看到的是123.html内容,URL地址不变
2、访问www.example.com/whsir/21.html(文件不存在)时,此时跳转到江边城外的博客,URL地址改变
总结:当文件不存在时,会去查找@ab值,此时在location中定义@ab值跳转到江边城外的博客
location /whsir/ {
try_files $uri /whsir/default.gif;
}
说明:
1、访问www.example.com/whsir/123/321(文件不存在)时,此时看到的是default.gif图片,URL地址不变
2、访问www.example.com/whsir/123.png(文件存在)时,此时看到的是123.png图片,URL地址不变
总结:当images目录下文件不存在时,默认返回default.gif
alias
location /bb {
alias d:/work/nginx-1.10.2/html/aa/;
}
说明:
1)alias指定的目录是准确的,即location匹配访问的path目录下的文件直接是在alias目录下查找的;
2)root指定的目录是location匹配访问的path目录的上一级目录,这个path目录一定要是真实存在root指定目录下的;
3)使用alias标签的目录块中不能使用rewrite的break(具体原因不明);另外,alias指定的目录后面必须要加上"/"符号!!
4)alias虚拟目录配置中,location匹配的path目录如果后面不带"/",那么访问的url地址中这个path目录后面加不加"/"不影响访问,访问时它会自动加上"/";
但是如果location匹配的path目录后面加上"/",那么访问的url地址中这个path目录必须要加上"/",访问时它不会自动加上"/"。如果不加上"/",访问就会失败!
5)root目录配置中,location匹配的path目录后面带不带"/",都不会影响访问。
proxy_pass
假设下面四种情况分别用 http://192.168.1.1/proxy/test.html 进行访问
第一种:
location /proxy/ {
proxy_pass http://127.0.0.1/;
}
代理到URL:[http://127.0.0.1/test.html](http://127.0.0.1/test.html)
第二种(相对于第一种,最后少一个 / )
location /proxy/ {
proxy_pass http://127.0.0.1;
}
代理到URL:[http://127.0.0.1/proxy/test.html](http://127.0.0.1/proxy/test.html)
说明:
在nginx中配置proxy_pass代理转发时,如果在proxy_pass后面的url加/,表示绝对根路径;如果没有/,表示相对路径,把匹配的路径部分也给代理走。
网友评论