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

nginx устанавливает другой корень документа для proxypass

Я просто пытаюсь запустить приложение nodejs, которое я сделал в домене proxypass, и заставить его работать точно так же, как на моем рабочем столе. Однако по какой-то причине, хотя я определил отдельный корень документа для этого пути proxypass, он не загружал файлы из него. Я проделал то же самое со своей страницей 404, и это сработало. Вот эта страница: https://jakesandbox.com/iwl который загружает файл server.js, который, в свою очередь, загружает файл index.html, но все сценарии и стили, ссылки на которые индексируются, не могут быть загружены. Вот мой конфиг nginx (с цензорами):

server {
        listen 80 default_server;
        listen [::]:80 default_server;
        listen 443 ssl default_server;
        listen [::]:443 ssl default_server;
        root /home/ubuntu/FAKE WEB ROOT DIR;
        index index.html index.htm index.php index.nginx-debian.html;
        server_name XXxXX.com;
        error_page 404 /404.html;
        location = /404.html {
                root /home/ubuntu/FAKE ERROR DIR/;
                internal;
        }
        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/run/php/php7.2-fpm.sock;
        }
        location ~ /\.ht {
                deny all;
        }
        ssl_certificate /etc/letsencrypt/live/XXxXX.com.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/XXxXX.com.com/privkey.pem;
        location /iwl {
                root /home/ubuntu/FAKE NODEJS DIR/;
                proxy_pass http://localhost:PORT/;
                proxy_ssl_trusted_certificate /etc/letsencrypt/live/XXxXX.com.com/fullchain.pem;
                proxy_ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        }
}

P.S. Я не хочу перемещать свое приложение nodejs в мой корневой каталог / путь изменения

Если вы откроете вкладку «Сеть» в инструментах разработки своего браузера, вы увидите, что сайт пытается загрузить ресурсы в корень URL-адреса. например:

https://jakesandbox.com/style.css 404

Поскольку вы не хотите изменять пути Node.JS, вы можете обойти это с помощью подстановочного знака местоположения nginx, добавленного в server блок:

location ~* \.(js|css)$ {
        root /path/to/your/node/root;   
        expires 30d;
    }

Возможно, вам придется отредактировать это, чтобы включить другие расширения. Я включен js и css выше.

/path/to/your/node/root должен содержать файлы css и js на этом уровне.

РЕДАКТИРОВАТЬ

У меня не хватает времени проверить это, но да, location Блок, который я разместил, может перехватывать файлы JS, CSS в корне домена. Можете ли вы протестировать и обновить комментарии. Это правило может работать лучше:

location ~* ^/iwl/.+\.(js|css|jpg)$ {
    root /path/to/your/node/root;
} 

Однако у меня самого с этим возникают проблемы, так как при применении, похоже, ищет /path/to/your/node/root/iwl/style.css это означает, что вам нужно переместить что-либо в корне вашего узла в подкаталог с именем iwl. Если вы можете позволить себе это изменение, оно может оказаться полезным. Вы даже можете позвонить в каталог static это общий метод, используемый для других веб-сайтов.