Nginx - Как обслуживать 404 и статические файлы через частную сеть?

Я в точности следовал этому руководству чтобы успешно настроить мое приложение Node.Js: https://www.digitalocean.com/community/tutorials/how-to-set-up-a-node-js-application-for-production-on- ubuntu-14-04

Мое приложение Node живет в отдельной капле, как и мой Nginx. Я перенаправляю весь свой трафик www и http на https://domain.com . Все это РАБОТАЕТ.

Теперь я также хочу обслуживать пользовательские файлы ошибок. Но они находятся в приложении узла в другой капле, в общей папке / var / www / app / public. Могу ли я обслуживать свой файл 404 из Nginx, но хранить его в капле Node.JS?

Тот же вопрос для моих статических файлов (изображений / шрифтов), есть ли способ, которым я могу обслуживать свои статические файлы из Nginx, но храните их в моей капле Node.js (НЕ копируйте их в каплю Nginx?)

Спасибо

server {
    listen 80;
    server_name www.domain.com;
    return 301 https://domain.com$request_uri;
}

server {
    listen 443 ssl;
    server_name www.domain.com;

    return 301 https://domain.com$request_uri;

    ssl_certificate /etc/nginx/ssl/www.domain.com.chained.crt;
    ssl_certificate_key /etc/nginx/ssl/www.domain.com.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers AES256+EECDH:AES256+EDH:!aNULL;
    ssl_prefer_server_ciphers on;
}

server {
    listen 443 ssl;
    server_name domain.com;

    ssl_certificate /etc/nginx/ssl/www.domain.com.chained.crt;
    ssl_certificate_key /etc/nginx/ssl/www.domain.com.key;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers AES256+EECDH:AES256+EDH:!aNULL;
    ssl_prefer_server_ciphers on;

    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    location / {
      proxy_pass http://ip_of_node_droplet:4000;
      proxy_redirect off;
      proxy_http_version 1.1;
    }
}
0
задан 16 December 2015 в 15:58
1 ответ

Мне приходят в голову две идеи:

  • Вы можете настроить службу типа NFS на дроплете, на котором хранятся файлы (сервер 1), о которых идет речь. После этого экспортируйте каталог, содержащий файлы (через NFS) и смонтируйте его на машине, на которой хостинг nginx (сервер 2).

  • Вы можете настроить nginx также на вашем сервере 1,.

Чтобы это заработало, вам нужно будет изменить вашу конфигурацию nginx на сервере 2. Включите директивы местоположения для ваших статических файлов и страниц ошибок; может быть что-то вроде:

location /static {
  root /srv/nfs-imported;
}

error_page 404 /custom_404.html;
location = /custom_404.html {
  root /srv/nfs-imported;
  internal;
}

error_page 500 502 503 504 /custom_50x.html;
location = /custom_50x.html {
  root /srv/nfs-imported;
  internal;
}

Это всего лишь пример, и предполагается, что вы идете на мою первую описанную идею. В случае, если вас больше интересует второе предложение, вы бы не использовали директивы root, а вместо них proxy_pass, как будто вы уже используете для всех запросов, которые должны идти к вашему node app.

.
0
ответ дан 5 December 2019 в 11:16

Теги

Похожие вопросы