Prefazione: ho provato ad installare l'estensione del nodo di JXCore per Plesk e non riesco a farlo funzionare. mi dà qualche errore e il loro supporto non risponde email ......Plesk 12.5 Passaggio proxy Nginx SSL all'app Node su porta diversa
[INDIRIZZO IP] = IP reale, example.com = dominio reale
Comunque, ho i miei nodejs app installato e funzionante con un certificato SSL. Funziona bene se vado a https://example.com:3000, che è la porta che sto usando per il nodo. Il certificato SSL carica tutto in verde e tutto funziona alla grande.
Sto usando Plesk 12.5 e Nginx viene già installato. Il file .conf si trova in /var/www/vhosts/[domain]/conf/nginx.conf.
In alto si legge:
#DO NOT MODIFY THIS FILE BECAUSE IT WAS GENERATED AUTOMATICALLY,
#SO ALL YOUR CHANGES WILL BE LOST THE NEXT TIME THE FILE IS GENERATED.
E non sono scherzando. Eventuali modifiche a questo file vengono sovrascritte quasi immediatamente.
Ecco l'intero contenuto del file:
server {
listen [IP ADDRESS]:443 ssl;
server_name example.com;
server_name www.example.com;
server_name ipv4.example.com;
ssl_certificate /usr/local/psa/var/certificates/cert-HREdQ9;
ssl_certificate_key /usr/local/psa/var/certificates/cert-HREdQ9;
ssl_client_certificate /usr/local/psa/var/certificates/cert-wpX6q1;
client_max_body_size 128m;
root "/var/www/vhosts/msgable.com/httpdocs";
access_log "/var/www/vhosts/system/example.com/logs/proxy_access_ssl_log";
error_log "/var/www/vhosts/system/example.com/logs/proxy_error_log";
location/{
proxy_pass https://[IP ADDRESS]:7081;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
access_log off;
}
location @fallback {
proxy_pass https://[IP ADDRESS]:7081;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
access_log off;
}
location ~ ^/plesk-stat/ {
proxy_pass https://[IP ADDRESS]:7081;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
access_log off;
}
location ~ ^/(.*\.(ac3|avi|bmp|bz2|css|cue|dat|doc|docx|dts|eot|exe|flv|gif|gz|htm|html|ico|img|iso|jpeg|jpg|js|mkv|mp3|mp4|mpeg|mpg|ogg|pdf|png|ppt|pptx|qt|rar|rm|svg|swf|tar|tgz|ttf|txt|wav|woff|woff2|xls|xlsx|zip))$ {
try_files $uri @fallback;
}
location ~ ^/(plesk-stat|webstat|webstat-ssl|ftpstat|anon_ftpstat|awstats-icon) {
proxy_pass https://74.208.65.63:7081;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
access_log off;
}
location ~ ^/~(.+?)(/.*?\.php)(/.*)?$ {
alias /var/www/vhosts/example.com/web_users/$1/$2;
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass "unix:///var/www/vhosts/system/example.com/php-fpm.sock";
include /etc/nginx/fastcgi.conf;
}
location ~ ^/~(.+?)(/.*)?$ {
proxy_pass https://[IP ADDRESS]:7081;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
access_log off;
}
location ~ \.php(/.*)?$ {
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass "unix:///var/www/vhosts/system/example.com/php-fpm.sock";
include /etc/nginx/fastcgi.conf;
}
location ~ /$ {
index index.html index.cgi index.pl index.php index.xhtml index.htm index.shtml;
}
include "/var/www/vhosts/system/example.com/conf/vhost_nginx.conf";
}
non voglio includere il HTTP (non-SSL) roba, perché è lo stesso informazioni. L'unica differenza è che il porto è di 80, e il proxy_pass è impostato su 7080.
Noterete in basso, che ha:
include "/var/www/vhosts/system/example.com/conf/vhost_nginx.conf";
Questo è quello che ho messo in quel file:
location/{
proxy_pass https://[IP ADDRESS]:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
access_log off;
}
Mettere che lì mi dà un:
nginx: [emerg] duplicate location "/"
Ho anche provato ad utilizzare "direttive nginx aggiuntive" di Plesk nelle impostazioni, ma ottengo lo stesso errore:
nginx: [emerg] duplicato posizione "/" Tutte le idee? Sto per scaricare Plesk e cercare AWS o qualcosa del genere ... Sono giunto alla conclusione che, a) NON puoi sovrascrivere i conf Nginx creati da Plesk, b) NON puoi cambiare direttamente il file conf.
Quindi praticamente proxy_pass con Plesk è impossibile.
Edit:
provato anche farlo la strada a monte, ma l'aggiunta di direttive a monte per l'interfaccia di amministrazione tramite Plesk, o tramite vhost_nginx.conf mi dà un errore che dice "nginx: [emerg] direttiva a monte non è consentito Qui".
Modifica # 2: Leggi questo post Nginx to address Nodejs app, aggiungendo ciò che è stato spiegato qui non fa nulla. Iniziare a pensare che ciò non sia possibile usando Plesk.
ARG! Un compito così semplice su un server senza Plesk!
Penso che la parte essenziale di questa risposta (per lo stesso problema che ho) sta usando "posizione ~ /" invece di "posizione /" per evitare l'avvertimento duplicato. – mniess
Hai ragione, rimuoverò tutte le altre cose che non sono necessarie. – David
Grazie mille! Il wrapping proxy_pass con 'location ~/{}' ha risolto il problema! – Kovah