NGINX 位置行为异常...不匹配目录

NGINX 位置行为异常...不匹配目录

我有一个 Wordpress 安装,在其根文件夹中我有一个自定义的外部服务。我想在单独的池上运行此外部服务。因此,我创建了 2 个池php 前端模块一个将在 127.0.0.1:9000 中运行,第二个将在:127.0.0.1:9001 中运行

我检查了一下,我是否可以 telnet 到这个端口,并且它已经打开并可以正常工作。

我的 NGINX 不会发送数据。这是我的 nginx 配置:

server {
    listen 80;

    root /var/www/website;
    index index.php index.html index.htm;

    location / {
            # try_files $uri $uri/ =404;
            try_files $uri $uri/ /index.php?q=$uri&$args;
    }

    error_page 404 /404.html;

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
            root /usr/share/nginx/html;
    }

    location /service {
    #       include cors;
            try_files $uri =404;
            fastcgi_param REMOTE_ADDR $http_x_real_ip;
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass 127.0.0.1:9001;
            fastcgi_index index.php;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
            fastcgi_param REMOTE_ADDR $http_cf_connecting_ip;

    }

    location ~ \.php$ {
            try_files $uri =404;
            fastcgi_param REMOTE_ADDR $http_x_real_ip;
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
            fastcgi_param REMOTE_ADDR $http_cf_connecting_ip;

    }
}

现在当我去

http://localhost/服务

我得到了 wordpress 的 404,但是当我去

http://localhost/service/index.php

我正在获取服务。

如果我删除

定位服务

从 Nginx 配置中,当我导航到时,我将获取服务文件夹中的 index.phphttp://localhost/服务

我该如何配置以便在 /service URL 上调用该服务?

答案1

Nginx 配置是按顺序执行的,因此为了让它在第一次匹配后停止,你需要添加break 指令像这样:

location /service {
#       include cors;
        try_files $uri =404;
        fastcgi_param REMOTE_ADDR $http_x_real_ip;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass 127.0.0.1:9001;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
        fastcgi_param REMOTE_ADDR $http_cf_connecting_ip;
        break;

}

相关内容