Назад | Перейти на главную страницу

Принудительно запрашивать сервер приложений по умолчанию с помощью Nginx

Вопрос новичка здесь.

Я установил Parse-Server в своей капле Ubuntu, и в настоящее время я сталкиваюсь с проблемой. Мой ssl от letsencrypt

В этом файле

/etc/nginx/sites-enabled/default

У меня есть следующие

# HTTP - redirect all requests to HTTPS
server {
    listen 80;
    listen [::]:80 default_server ipv6only=on;
    server_name example.com;
    return 301 https://$host$request_uri;
}

# HTTPS - serve HTML from /usr/share/nginx/html, proxy requests to /parse/
# through to Parse Server
server {
        listen 443;
        server_name example.com;

        root /usr/share/nginx/html;
        index index.html index.htm;

        ssl on;
        # Use certificate and key provided by Let's Encrypt:
        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';

        # Pass requests for /parse/ to Parse Server instance at localhost:1337
        location /parse/ {
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-NginX-Proxy true;
                proxy_pass http://localhost:1337/;
                proxy_ssl_session_reuse off;
                proxy_set_header Host $http_host;
                proxy_redirect off;
        }
        location /test/ {
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-NginX-Proxy true;
                proxy_pass http://localhost:1337/test/;
                proxy_ssl_session_reuse off;
                proxy_set_header Host $http_host;
                proxy_redirect off;
        }
        location /dashboard/ {
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-NginX-Proxy true;
                proxy_pass http://localhost:4040/dashboard/;
                proxy_ssl_session_reuse off;
                proxy_set_header Host $http_host;
                proxy_redirect off;
        }

        location / {
                try_files $uri $uri/ =404;
        }
}

Итак, следующие ссылки работают нормально

но они работают, потому что код файла по умолчанию работает нормально. Я не могу сделать это для всех каталогов, которые, например, в parse

выдает ошибку 404.

Есть ли способ сделать все страницы доступными, не настраивая их в default файл?

Обновить

Поэтому, когда я помещаю это в свой файл по умолчанию

    location /parse/ {
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-NginX-Proxy true;
            proxy_pass http://localhost:1337/parse/;
            proxy_ssl_session_reuse off;
            proxy_set_header Host $http_host;
            proxy_redirect off;
    }

Я не получаю ошибки 404. Это из-за proxy_pass http://localhost:1337/parse/ это отличается от первого файла, который я разместил здесь.

Но как я могу сделать это для ВСЕХ запросов независимо от того, /parse/ или /something/ и т.д? Я не могу прямо здесь ВСЕ папки и возможные ссылки, которые я создам на сервере. Потому что в этом домене я также установлю веб-сайт, на котором будет /assets/ и т. д., и для этого понадобится каждый. Нет ли кода для включения ВСЕХ возможных ссылок, которые будут созданы?

Если вы хотите, чтобы большинство запросов отправлялось на прокси, но обслуживали только некоторый контент непосредственно из nginx, вы можете использовать эту структуру:

location /path/to/nginx/content {
    try_files $uri $uri/ =404;
}

location /dashboard {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-NginX-Proxy true;
    proxy_pass http://localhost:4040/dashboard/;
    proxy_set_header Host $http_host;
    proxy_redirect off;
}

location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-NginX-Proxy true;
    proxy_pass http://localhost:1337;
    proxy_set_header Host $http_host;
    proxy_redirect off;
}

Итак, сначала мы указываем исключения для процедуры по умолчанию, а затем случай по умолчанию.

Обратите внимание, что нет конца / в proxy_pass директива в случае по умолчанию. Это означает, что nginx добавит URI к запросу, отправляемому на прокси-сервер, то есть https://example.com/some/path будет проксирован на http://localhost:1337/some/path.

Я удалил proxy_ssl_session_reuse директива, поскольку она ничего не значит, когда подключение к прокси выполняется с помощью http.

Если прокси-соединения выполняются с https, даже в этом случае бесполезно отключать повторное использование сеанса, поскольку это снижает производительность из-за согласования нового сеанса SSL при каждом запросе к прокси.

Затем нужно убедиться, что root Директива указывает правильный каталог, в котором nginx может найти статические ресурсы. Для root опция в вашей конфигурации, https://example.com/path/to/nginx/content/example.gif должен быть в /usr/share/nginx/html/path/to/nginx/content/example.gif в файловой системе.