2016-04-30 22 views
6

Przedmowa: próbowałem zainstalować rozszerzenie węzła JXCore dla Plesk i nie mogę go uruchomić. Daje mi jakiś błąd, a ich wsparcie nie odpowiada na e-maile ......Plesk 12.5 Nginx proxy przekazać SSL do aplikacji węzła na innym porcie

[ADRES IP] = prawdziwe IP, domena example.com = prawdziwy

Zresztą Mam nodejs app uruchomiony z certyfikatem SSL. Działa dobrze, jeśli przejdę do https://example.com:3000, który jest portem używanym przez węzeł. SSL cert ładuje wszystkie zielone i wszystko działa świetnie.

Używam Plesk 12.5, a Nginx jest już zainstalowany. Plik .conf znajduje się pod adresem /var/www/vhosts/[domena]/conf/nginx.conf.

Na górze jest napisane:

#DO NOT MODIFY THIS FILE BECAUSE IT WAS GENERATED AUTOMATICALLY, 
#SO ALL YOUR CHANGES WILL BE LOST THE NEXT TIME THE FILE IS GENERATED. 

I nie żartuję. Dokonywanie zmian w tym pliku get jest nadpisywane niemal natychmiast.

Oto cała zawartość plików:

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"; 
} 

I nie będzie zawierała HTTP (bez SSL) rzeczy, bo to samo informacji. Jedyną różnicą jest to, że port 80, a proxy_pass jest ustawiona na 7080.

Zauważysz na dole, że posiada:

include "/var/www/vhosts/system/example.com/conf/vhost_nginx.conf"; 

To właśnie oddany do tego pliku:

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; 

}

Umieszczenie że nie daje mi:

nginx: [emerg] duplicate location "/" 

Próbowałem też za pomocą „Dodatkowe wskazówki nginx” Plesk w ustawieniach, ale pojawia się ten sam błąd:

nginx: [emerg] powielać lokalizację „/” pomysłów? Zaraz wyrzucę Pleska i zajrzę do AWS czy coś takiego ... Doszedłem do wniosku, że a) NIE można nadpisać konfigencji Nginx stworzonej przez Pleska, b) NIE można bezpośrednio zmienić pliku conf.

Zasadniczo proxy_pass z Pleskiem jest niemożliwe.

Edit:

próbował także robi to upstream sposób, ale dodając dyrektyw Upstream do interfejsu administratora poprzez Plesk lub poprzez vhost_nginx.conf daje mi błąd mówiąc „nginx: [emerg] Dyrektywa Upstream jest niedozwolone tutaj".

Edytuj nr 2: Przeczytaj ten artykuł Nginx to address Nodejs app, dodając to, co tutaj wyjaśniono, nic nie robi. Zaczynam myśleć, że nie jest to możliwe przy użyciu Plesk.

ARG! Takie proste zadanie na serwerze bez Pleska!

Odpowiedz

13

Po dwóch dniach miażdżenia, to właśnie rozwiązało to dla mnie. W Plesku przechodzisz do "Dodatkowe dyrektywy nginx" na stronie "Opcje hostingu".

To jest to, co dodałem do NPCX proxy_pass do mojej aplikacji węzła. Nie trzeba edytować ani zmieniać żadnych plików .conf.

## Set the location routing. 
location ~/{ 

    proxy_set_header Host $host; 
    proxy_set_header X-Real-IP $remote_addr; 

    ##Use the domain.tld here. 
    proxy_pass https://example.com:3000; 
} 
+1

Myślę, że istotną częścią tej odpowiedzi (do tego samego problemu, który mam) jest użycie "location ~ /" zamiast tylko "location /", aby uniknąć duplikowania ostrzeżenia. – mniess

+0

Masz rację, usunę wszystkie pozostałe rzeczy, które nie są potrzebne. – David

+0

Dziękuję bardzo! Zawijanie proxy_pass z 'location ~/{}' rozwiązało problem! – Kovah