2016-04-30 6 views
6

Vorwort: Ich habe versucht, JXCores Knotenerweiterung für Plesk zu installieren, und ich kann es nicht zum Laufen bringen. Gibt mir einige Fehler, und ihre Unterstützung ist keine E-Mails zu beantworten ......Plesk 12.5 Nginx-Proxy SSL an Knoten-App an anderem Port übergeben

[IP-Adresse] = real IP, example.com = real Domain

wie auch immer, ich habe meine NodeJS App und läuft mit einem SSL-Zertifikat. Funktioniert gut, wenn ich zu https://example.com:3000 gehe, das ist der Port, den ich für Knoten verwende. SSL-Zertifikat lädt alles grün, und alles funktioniert gut.

Ich benutze Plesk 12.5, und Nginx kommt bereits installiert. Die .conf-Datei befindet sich unter /var/www/vhosts/[domain]/conf/nginx.conf.

An der Spitze heißt es:

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

Und sie sind kein Scherz. Änderungen an dieser Datei werden fast sofort überschrieben.

Hier ist die gesamte Dateiinhalt:

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

Ich werde nicht die HTTP (nicht-ssl) Sachen sind, weil sie die gleichen Informationen ist. Der einzige Unterschied ist, dass der Port 80 ist, und die proxy_pass wird auf 7080.

Sie am unteren Rand bemerken werden, dass sie:

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

Dies ist, was ich in dieser Datei setzen:

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; 

}

dass Putting in gibt mir ein:

nginx: [emerg] duplicate location "/" 

Ich habe auch versucht Plesks „Weitere nginx-Richtlinien“ in den Einstellungen, aber ich den gleichen Fehler:

nginx: [emerg] doppelte Lage „/“ Irgendwelche Ideen? Ich bin im Begriff, Plesk zu entleeren und in AWS oder etwas zu schauen .... Ich bin zu der Schlussfolgerung gekommen, dass, a) Sie Nginx confs nicht überschreiben können, die von Plesk geschaffen werden, b) Sie können die conf-Datei nicht direkt ändern.

Also im Grunde Proxy_pass mit Plesk ist unmöglich.

Edit:

Auch versucht er den Upstream Weg zu tun, aber das Hinzufügen Upstream-Richtlinien an die Admin-Interface über Plesk oder durch vhost_nginx.conf gibt mir eine Fehlermeldung, „nginx: [emerg] Richtlinie Upstream nicht erlaubt ist Hier".

Bearbeiten # 2: Lesen Sie diesen Beitrag Nginx to address Nodejs app, Hinzufügen, was hier erklärt wurde, tut nichts. Ich denke, das ist mit Plesk nicht möglich.

ARG! Solch eine einfache Aufgabe auf einem Server ohne Plesk!

Antwort

13

Nach zwei Tagen mucking, das ist, was es für mich gelöst. In Plesk gehen Sie auf der Seite "Hosting-Optionen" zu den "Zusätzlichen nginx-Anweisungen".

Das habe ich hinzugefügt, um Nginx proxy_pass zu meiner Knoten-App zu machen. Sie mussten keine .conf-Dateien bearbeiten oder ändern.

+1

Ich denke, der wesentliche Teil dieser Antwort (zu dem gleichen Problem, das ich habe) ist "location ~ /" statt nur "location /", um die doppelte Warnung zu vermeiden. – mniess

+0

Sie haben Recht, ich werde alle anderen Sachen entfernen, die nicht benötigt werden. – David

+0

Vielen Dank! Wrapping proxy_pass mit 'location ~/{}' löste das Problem! – Kovah