0

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"
6
  • Show several examples of requests and what in nginx's log file for these requests.
    – Alexey Ten
    Nov 13 at 14:48
  • https://s1.dev2.company.cz/api/registration for example added this record into 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" I can see now the issue but don't understand why is it happening.
    – jnd
    Nov 13 at 16:52
  • Have you restarted nginx? These errors do not match the config in question.
    – Alexey Ten
    Nov 13 at 18:07
  • Also error indicates that the request was s1-api.dev2.company.cz/registration, not s1.dev2.company.cz/api/registration.
    – Alexey Ten
    Nov 13 at 18:08
  • Yes, I definitely restarted nginx.
    – jnd
    Nov 14 at 8:09

0

You must log in to answer this question.

Browse other questions tagged .