Как получить nginx для обслуживания ресурсов, смежных с index.html, при использовании proxy_pass? - PullRequest
0 голосов
/ 06 января 2019

Как получить nginx для обслуживания ресурсов, смежных с index.html, при использовании proxy_pass?

Контекст: у меня есть репозиторий github, который подает контент с использованием страниц github. При обслуживании из репозитория GHP требуется URL-адрес, соответствующий имени репозитория

rightisleft.github.io/repo_name/

В настоящее время index.html и все подкаталоги работают как положено. Загрузка активов с (css/*, images/*) возврат 200 с.

Однако такие ресурсы, как robots.txt и другие файлы в корне хранилища, возвращают 404 с.

Вот мой домен .conf

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name www.redacted.com;

    # SSL
    ssl_certificate /etc/letsencrypt/live/redacted.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/redacted.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/redacted.com/fullchain.pem;

        location / {
            proxy_set_header Host rightisleft.github.io;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_pass https://rightisleft.github.io/redacted/;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }        
}

# HTTP redirect
server {
    listen 80;
    listen [::]:80;

    server_name www.redacted.com,redacted.com;

    include nginxconfig.io/letsencrypt.conf;

    location / {
        return 301 https://www.redacted.com$request_uri;
    }
}

# subdomains redirect
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name redacted.com;

    # SSL
    ssl_certificate /etc/letsencrypt/live/redacted.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/redacted.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/redacted.com/fullchain.pem;

    return 301 https://www.redacted.com$request_uri;
}

EDIT

Nginx используется для управления сертификатами, чтобы связать несколько разных микро сервисов.

1 Ответ

0 голосов
/ 17 января 2019

Попробуйте, так как это может сработать (если ваши css / assets находятся на страницах репозитория github), и вам не нужно настраивать много перенаправлений, если у вас много доменов / поддоменов, а я также установил для redacted.com значение server_name:

    server {
            listen 80 http2;
            listen [::]:80 http2;
            listen 443 ssl http2 default_server;
            listen [::]:443 ssl http2 default_server;
            server_name redacted.com www.redacted.com;

    # SSL
    ssl_certificate /etc/letsencrypt/live/redacted.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/redacted.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/redacted.com/fullchain.pem;

            location / {
                    proxy_set_header        Host                    $host;
                    proxy_set_header        X-Real-IP               $remote_addr;
                    proxy_set_header        X-Forwarded-For         $proxy_add_x_forwarded_for;
                    proxy_set_header        X-Forwarded-Proto       $scheme;
                    proxy_pass              https://rightisleft.github.io/redacted$request_uri;
                    proxy_buffering         off;
                    proxy_redirect          default; #or off
                    proxy_intercept_errors on;

                    # allow GitHub to pass caching headers instead of using your own
                    expires off;
            }
    }
...