我有一个具有特定 IP 的 VPS Linux(Ubuntu)服务器,我想在自己的域 http://my_domain.com 上运行我的应用程序。我已经构建了一个 docker 容器,它在 localhost 0.0.0.0:80 上运行良好。然后,我想我必须配置 nginx 以将我的域连接到服务器 IP。
我已经以类似的方式配置了 nginx我如何转发来自我的网络服务器的请求?,但使用https://cran.r-project.org/web/packages/ReviewR/vignettes/deploy_server.html#configuring-nginx-to-reverse-proxy-shiny-server, IE
$ sudo nano /etc/nginx/sites-available/shiny
server {
server_name my_domain.com;
location / {
proxy_pass http://localhost:80;
proxy_redirect / $scheme://$http_host/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_read_timeout 20d;
proxy_buffering off;
}
}
但是,我得到了以下信息:
$ sudo systemctl reload nginx
nginx.service is not active, cannot reload
然后,我写道:
$ sudo service nginx start
Job for nginx.service failed because the control process exited with error code.
See "systemctl status nginx.service" and "journalctl -xe" for details.
此外,我还写道:
$ systemctl status nginx.service
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Sun 2022-05-15 18:53:40 CEST; 11s ago
最后,我写道:
$ sudo nginx -t
nginx: [emerg] unknown "connection_upgrade" variable
nginx: configuration file /etc/nginx/nginx.conf test failed
但是,如果我导航到 my_server_ip,我可以看到我的应用程序正在运行。如果我导航到 http://my_domain.com,我可以看到托管提供商默认页面,但我看不到我的应用程序正在运行。
我想知道如何在我自己的域上运行我的应用程序。
答案1
将以下部分添加到您的 nginx 配置:
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}