我认为标题说明了一切,这是我的 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"