在自己的域上运行 docker 应用程序

在自己的域上运行 docker 应用程序

我有一个具有特定 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;
}

相关内容