美文网首页
Nginx笔记

Nginx笔记

作者: 郭彦超 | 来源:发表于2020-07-02 10:56 被阅读0次

重定向

反向代理:

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加/,表示绝对根路径;如果没有/,表示相对路径,把匹配的路径部分也给代理走。

相关文章

网友评论

      本文标题:Nginx笔记

      本文链接:https://www.haomeiwen.com/subject/ymylqktx.html