【问题标题】:nginx multiple locations for one rule regex一个规则正则表达式的 nginx 多个位置
【发布时间】:2012-03-23 23:40:21
【问题描述】:

我正在尝试强制 nginx 通过 php-fpm 以下网址进行处理:

任何以

结尾的网址
  • .php
  • /sitemap.xml
  • /api/api.js

我正在尝试以下正则表达式,但它不起作用:

location ^~ ^((.*\.php)|/sitemap.xml)+$ {

【问题讨论】:

    标签: nginx location php


    【解决方案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

      【讨论】:

        猜你喜欢
        • 2020-09-11
        • 2017-04-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-05
        • 2017-01-03
        • 1970-01-01
        相关资源
        最近更新 更多