Я в точности следовал этому руководству чтобы успешно настроить мое приложение 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;
}
}
Мне приходят в голову две идеи:
Вы можете настроить службу типа 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
.