我正在寻找通过同一台计算机(可能是通过nginx)来服务两个网站的服务器。目前,我在nginx后面运行一个内部Flask服务器,所有这些服务器都在Ubuntu 18的盒子上运行。
nginx服务器设置如下:
server {
# listen on port 80 (http)
listen 80;
server_name _;
location / {
# redirect any requests to the same URL but on https
return 301 https://$host$request_uri;
}
}
server {
# listen on port 443 (https)
listen 443 ssl;
server_name _;
# location of the self-signed SSL certificate
ssl_certificate /home/ubuntu/certs/cert.pem;
ssl_certificate_key /home/ubuntu/certs/key.pem;
access_log /var/log/access.log;
error_log /var/log/error.log;
location / {
# forward application requests to the internal server
proxy_pass http://127.0.0.1:8000;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
我没有与此IP相关联的域,因此我通常通过例如访问https://123.456.789.123(不是真实IP)。效果很好。
我想启动另一个Flask服务器,在同一台机器上运行一个完全独立的应用程序。
两个问题:
实现此目标的最佳方法是什么?我当时正在考虑在不同的端口上提供网站服务。不能选择使用其他子域,因为我没有在盒子上附加域。
要实现此目的,正确的nginx设置是什么?我尝试设置一个监听端口8001的服务器,如下所示:
server {
listen 8001;
server_name _;
# location of the self-signed SSL certificate
ssl_certificate /home/ubuntu/certs/cert.pem;
ssl_certificate_key /home/ubuntu/certs/key.pem;
access_log /var/log/access1.log;
error_log /var/log/error1.log;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
但是这似乎不起作用-转到https://123.456.789.123:8001不会返回任何内容(甚至不返回nginx Bad Gateway页面),该页面只是超时。