使用 Symfony 应用程序和 nginx 时,所有路由均返回 404

使用 Symfony 应用程序和 nginx 时,所有路由均返回 404

我认为标题说明了一切,这是我的 nginx 配置文件。
我应该提到,本地在 dockerized 环境中一切都运行良好,所以我认为这是与 nginx 相关的问题。此外,应用程序的 React 部分正在运行,我只遇到了 api 问题。

server {
    server_name s1.dev2.company.cz;
    root /var/www/s1;

    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

    location / {
        root /var/www/s1/packages/web/dist;
        index index.html;
        try_files $uri /index.html;
    }

    # optionally disable falling back to PHP script for the asset directories;
    # nginx will return a 404 error when files are not found instead of passing the
    # request to Symfony (improves performance but Symfony's 404 page is not displayed)
    # location /bundles {
    #     try_files $uri =404;
    # }

    location /api/ {
        root /var/www/s1/packages/api/public;
        index index.php
        try_files $uri $uri/ /index.php;
        fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;

        # optionally set the value of the environment variables used in the application
        # fastcgi_param APP_ENV prod;
        # fastcgi_param APP_SECRET <app-secret-id>;
        # fastcgi_param DATABASE_URL "mysql://db_user:db_pass@host:3306/db_name";

        # When you are using symlinks to link the document root to the
        # current version of your application, you should pass the real
        # application path instead of the path to the symlink to PHP
        # FPM.
        # Otherwise, PHP's OPcache may not properly detect changes to
        # your PHP files (see https://github.com/zendtech/ZendOptimizerPlus/issues/126
        # for more information).
        # Caveat: When PHP-FPM is hosted on a different machine from nginx
        #         $realpath_root may not resolve as you expect! In this case try using
        #         $document_root instead.
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
        # Prevents URIs that include the front controller. This will 404:
        # http://domain.tld/index.php/some-path
        # Remove the internal directive to allow URIs like this
        internal;
    }

    # return 404 for all other php files not matching the front controller
    # this prevents access to other php files you don't want to be accessible.
    location ~ \.php$ {
        return 404;
    }

    error_log /var/log/nginx/project_error.log;
    access_log /var/log/nginx/project_access.log;


    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/s1.dev2.company.cz/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/s1.dev2.company.cz/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}

server {
    if ($host = s1.dev2.company.cz) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    server_name s1.dev2.company.cz;
    listen 80;
    return 404; # managed by Certbot
}

编辑:这是已添加到project_error.log文件中的行,我知道问题出在哪里,但不知道为什么会发生这种情况,我的配置对我来说似乎很好。

2023/11/13 14:58:57 [error] 300094#300094: *4 open() "/var/www/s1/packages/api/registration" failed (2: No such file or directory), client: 86.49.227.204, server: s1-api.dev2.company.cz, request: "GET /registration HTTP/1.1", host: "s1-api.dev2.company.cz"

相关内容