如何使nginx通过ssl服务多个端口重定向?



我有一个前端和两个后端在我的计算引擎上运行。

我的第一个后端运行在端口5000上,第二个后端运行在端口5050上。我把所有前端文件放在一个名为/var/www/html的文件夹中。

下面是我的nginx配置文件:

server {
listen 80 default_server;
server_name <server_name>;
return 301 https://$server_name$request_uri;
}

server {
listen 443 ssl;
server_name <server_name>;
ssl_certificate <location_to_certificate>;
ssl_certificate_key <location_to_private_key>;
location / {
root /var/www/html;
index index.html index.htm;
}
}

现在这可以很好地为我的前端文件提供ssl,但在flask上运行的后端api使用以下命令:

gunicorn --workers 5 -b 0.0.0.0:5050 wsgi:app

gunicorn --workers 5 -b 0.0.0.0:5000 wsgi:app

,其中这些文件位于两个不同的文件夹中。我不知道如何使用nginx在https模式下监听这两个端口。

经过大量查找后,我可以通过简单地添加另一个侦听器服务器来实现这一点,如下所示:

server {
listen 80 default_server;
server_name <server_name>;
return 301 https://$server_name$request_uri;
}

server {
listen 443 ssl;
server_name <server_name>;
ssl_certificate <location_to_certificate>;
ssl_certificate_key <location_to_private_key>;
location / {
root /var/www/html;
index index.html index.htm;
}
}
server {
listen 5050 ssl;
server_name <server_name>;
ssl_certificate <location_to_certificate>;
ssl_certificate_key <location_to_private_key>;
location / {
include proxy_params;
proxy_pass http://unix:<location_to_,sockfile>;
}
}

此外,为了创建.sock文件,我参考了本教程:https://www.digitalocean.com/community/tutorials/how-to-serve-flask-applications-with-gunicorn-and-nginx-on-ubuntu-18-04

一旦创建了.sock文件,这个过程就变得非常简单。如果你得到一个502 bad gateway错误,这意味着你已经正确配置了你的nginx.conf文件,但你需要连接nginx和gunicorn,并调试这些问题,我发现这个指南非常有帮助。

最好的收获是,你总是可以在/var/log/nginx/中评估你的日志,并寻找errors.logaccess.log来更快地调试问题。

最新更新