gpt4 book ai didi

nginx - Plesk 12.5 Nginx 代理将 SSL 传递到不同端口上的 Node 应用程序

转载 作者:行者123 更新时间:2023-12-03 15:10:10 24 4
gpt4 key购买 nike

前言:尝试为 Plesk 安装 JXCore 的节点扩展,但我无法让它工作。给我一些错误,他们的支持不是回复电子邮件......

[IP 地址] = 真实 IP,example.com = 真实域

无论如何,我已经使用 SSL 证书启动并运行了我的 nodejs 应用程序。如果我去 https://example.com:3000 工作正常,这是我用于 Node.js 的端口。 SSL 证书加载全部绿色,并且一切正常。

我使用的是 Plesk 12.5,并且已经安装了 Nginx。 .conf 文件位于/var/www/vhosts/[domain]/conf/nginx.conf。

上面写着:

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

他们不是在开玩笑。对此文件进行任何更改几乎立即被覆盖。

这是整个文件内容:
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";
}

我不会包括 HTTP(非 ssl)的东西,因为它是相同的信息。唯一不同的是端口是80,proxy_pass设置为7080。

您会在底部注意到,它具有:
include "/var/www/vhosts/system/example.com/conf/vhost_nginx.conf";

这是我放入该文件的内容:
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;

}

把它放在那里给我一个:
nginx: [emerg] duplicate location "/"

我还尝试在设置中使用 Plesk 的“附加 nginx 指令”,但出现相同的错误:

nginx: [emerg] 重复位置“/”
有任何想法吗?我将要抛弃 Plesk 并研究 AWS 或其他东西....
我得出的结论是,a) 您不能覆盖由 Plesk 创建的 Nginx conf,b) 您不能直接更改 conf 文件。

所以基本上proxy_pass 与Plesk 是不可能的。

编辑:

还尝试以上游方式执行此操作,但是通过 Plesk 或通过 vhost_nginx.conf 将上游指令添加到管理界面会给我一个错误,提示“nginx: [emerg] 指令上游不允许此处”。

编辑#2:
阅读此帖 Nginx to address Nodejs app ,添加这里解释的内容没有任何作用。开始认为使用 Plesk 是不可能的。

阿格!在没有 Plesk 的服务器上完成如此简单的任务!

最佳答案

经过两天的折腾,这就是为我解决的问题。
在 Plesk 中,您转至“托管选项”页面内的“其他 nginx 指令”。

这是我添加的使 Nginx proxy_pass 到我的节点应用程序的内容。
根本不需要编辑或更改任何 .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;
}

关于nginx - Plesk 12.5 Nginx 代理将 SSL 传递到不同端口上的 Node 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36956205/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com