繁体   English   中英

Nginx自定义配置

[英]Nginx custom configuration

我需要我的NGINX配置来基于URL做一些独特的事情。

如果网址是:

mydomain.com/blog或mydomain.com/blog/

我需要NGINX在端口2368上提供一个幽灵博客,我通过以下方式完成此操作:

location /blog/ {
    proxy_pass http://localhost:2368;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_buffering off;
} 

如果网址是:

mydomain.com/some-article-title

我需要NGINX定向到some-article-title.html。 我这样做是:

location / {
    try_files $uri $uri/ $uri.html =404;
}

第一个问题:如果URL为mydomain.com/some-article-title/,或者如果大小写不同,例如mydomain.com/Some-article-Title,我也希望此方法有效。 如何在NGINX中做到这一点?

第二个问题:如果没有匹配的HTML文件,例如,如果URL是mydomain.com/jimsmith并且没有HTML文件jimsmith.html,我还需要NGINX重定向到特定的子域。我需要NGINX将用户带到jimsmith.mydomain .com我该怎么做?

location /blog//blog请求不匹配,但是location /blog将匹配。

try_files ...试试文件。 因此,如果您的请求包含一个斜杠,nginx将搜索目录(以/结尾的文件仅是任何文件系统上的目录)。

如果您希望nginx在请求包含尾部斜杠时搜索文件,则需要将请求rewrite为预斜杠形式。 请注意,将无法再访问目录...因此,建议不要使用下面显示的最通用的形式。 无论如何,都不建议使用尾部的斜线重写形式。

location ~* ^(?<article>/[^/]+)/$ {
    return 302 $scheme://$host$article;
}

在文件系统中,不能有多个具有相同名称且大小写字母的文件,例如some-article-titleSome-article-Title ,因此使用现有文件搜索任何一个名称都将始终成功。

如果要重定向与try_files第一个参数不匹配的文件,则最后一个可以用作后备到指定位置的位置,在该位置可以发出重定向(请参阅try_files文档)。

location / {
    try_files $uri $uri/ $uri.html @notexisting;
}

location @notexisting {
    rewrite ^/(?<subdomain>.*)$ $scheme://$subdomain.mydomain.com;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM