I think title says it all, this is my nginx config file.
I should mention that locally everything is working fine in dockerized environment so I think it will be nginx related problem. Also the React part of the app is working, I have a problem only with 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
}
EDIT: This is line which has been added into project_error.log
file
I see where is the problem but don't know why is it happening, my configuration seems fine to me.
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"
https://s1.dev2.company.cz/api/registration
for example added this record into project_error.log2023/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"
I can see now the issue but don't understand why is it happening.s1-api.dev2.company.cz/registration
, nots1.dev2.company.cz/api/registration
.