Điểm:0

Nginx configuration for matching wildcard server_name to specific Symfony route

lá cờ bd

i have a Symfony 5 application at domain.tld with this basic nginx configuration:

map "$http_cloudfront_forwarded_proto:$http_x_forwarded_proto" $cloudfront_proto {
    default "http";
    "~https" "https";
}

server {
    server_name domain.tld;
    listen 80 backlog=65535;

    root /var/www/project/public;

    client_max_body_size 500M;

    location / {
        # try to serve file directly, fallback to index.php
        try_files $uri /index.php$is_args$args;
    }

    # 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 ~ ^/index\.php(/|$) {
        fastcgi_pass unix:/var/run/php/php7.4-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";
        fastcgi_param HTTP_X_FORWARDED_PROTO $cloudfront_proto;

        # 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).
        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;
}

My use case :

I have severals routes:

/site/{siteUrl}
/site/{siteUrl}/*
/site/{siteUrl}/*/*
...

like :

I want to access to this routes with an url like

I don"t want a redirection, but a rewrite rule for alls urls begin with prefix.domain.tld point to /site/prefix.domain.tld urls and all other statics assets urls like prefix.domain.tld/build/css/custom.css works.

I try to add a new server block with this add:

server {
    server_name prefix.*;
    root /var/www/project/public;
    listen 80;

    client_max_body_size 100M;

    location = / {
        rewrite ^ /index.php/site/$host break;
    }

...

But it didn't work at all...

Can you help me ? :D

Thanks

lá cờ us
Chính xác thì bạn đã làm gì khi "nó hoàn toàn không hoạt động..."? Bạn đã đưa ra yêu cầu gì? Câu trả lời chính xác là gì?
El Lobo Blanco avatar
lá cờ bd
Xin chào Terro. Khi tôi thử https://prefix.domainA.tld gặp lỗi 404 Not Found nginx

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.