一个规则正则表达式的 nginx 多个位置
Posted
技术标签:
【中文标题】一个规则正则表达式的 nginx 多个位置【英文标题】:nginx multiple locations for one rule regex 【发布时间】:2012-03-23 23:40:21 【问题描述】:我正在尝试强制 nginx 通过 php-fpm 以下网址进行处理:
任何以
结尾的网址 .php /sitemap.xml /api/api.js我正在尝试以下正则表达式,但它不起作用:
location ^~ ^((.*\.php)|/sitemap.xml)+$
【问题讨论】:
【参考方案1】:试试...
location ~ (\.php|sitemap\.xml|api/api\.js)$
...
【讨论】:
【参考方案2】:你不应该真的试图强迫 Nginx 向 PHP 发送东西。这是一种“错误的方式”。您应该让 Nginx 查看文件是否存在,如果不存在则通过。据了解,*.php需要经过PHP处理,所以传递.php。
location /
try_files $uri /index.php;
location ~ \.php
fastcgi_pass unix:/tmp/php-fpm.socket;
location = /api/api.js
fastcgi_pass unix:/tmp/php-fpm.socket;
location = /sitemap.xml
fastcgi_pass unix:/tmp/php-fpm.socket;
当您不了解 Nginx 位置块的工作原理时,尝试为位置维护正则表达式从长远来看会非常痛苦。
http://wiki.nginx.org/HttpCoreModule#location
【讨论】:
以上是关于一个规则正则表达式的 nginx 多个位置的主要内容,如果未能解决你的问题,请参考以下文章