【问题标题】:Nginx PHP-FPM alias pathNginx PHP-FPM 别名路径
【发布时间】:2020-03-10 11:59:24
【问题描述】:

我真的放弃了。我有 nginx+PHP-FPM,只是想给路径起别名。 期望:

https://example.com/api/v1.0/ -> /my/folder/v1.0/

我试过别名:

server {
    server_name mysite.com;
    index index.php;

    location /api/v1.0/ {
        index index.php;
        alias /my/folder/v1.0/;

        location ~ \.php$ {
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass php:9000;
            fastcgi_param SCRIPT_FILENAME $request_filename;
        }
    }
}

不。日志报告 nginx 正在尝试访问:

/etc/nginx/html/api/v1.0

所以我改变了根:

server {
    server_name mysite.com;
    root /my/folder/v1.0/;
    index index.php;

    location /api/v1.0/ {
        index index.php;
        alias /my/folder/v1.0/;

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass php:9000;
        fastcgi_param SCRIPT_FILENAME $request_filename;
    }
}

}

不。现在别名被忽略,nginx 尝试访问:

/my/folder/v1.0/api/v1.0

我没有想法,你能帮帮我吗?

【问题讨论】:

  • 您的服务器配置中还有其他内容吗?该初始配置应该按预期工作......
  • 嗨乔治,我在 docker 上的代理 (jwilder/nginx-proxy:alpine-0.7.0) 后面,不知道这是否重要...没有其他服务器配置。

标签: php nginx nginx-location nginx-config


【解决方案1】:

好的,我能够在本地复制和修复它。 这是我最终得到的结果:

        # where the actual API is
        root   /1int/code/test/nginx; 

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

        # This basically drops /api/1.0 prefix from the URL
        location ^~ /api/1.0 {
                rewrite ^/api/1.0/(.*)$ /$1 last;
        }

使用此配置,当我访问 /api/1.0/api.php 时,它会获取 <root>/api.php

【讨论】:

  • 抱歉,感谢您抽出宝贵时间,但这不是我想要的,它太具体了,我需要一个更“干净”的解决方案,无需重写......
  • 好的,那么清洁液的要求是什么?
猜你喜欢
  • 1970-01-01
  • 2016-02-07
  • 2017-05-04
  • 1970-01-01
  • 2020-08-08
  • 1970-01-01
  • 2014-11-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多