Shinyproxy: nginx反向代理不工作

创建于 2021-01-15  ·  7评论  ·  资料来源: openanalytics/shinyproxy

我正在尝试通过 nginx 反向代理将应用程序部署到互联网。 我的应用程序是完全容器化的,我在 /etc/nginx/sites-available 中的 nginx 配置文件与这里的 Shinyproxy 示例相匹配: https ://www.shinyproxy.io/security/

服务器 {
听80;
server_name Shinyproxy.yourdomain.com;
重写 ^(.*) https://$server_name$1 永久;
}

服务器 {
听 443;
server_name Shinyproxy.yourdomain.com;
access_log /var/log/nginx/shinyproxy.access.log;
error_log /var/log/nginx/shinyproxy.error.log 错误;

ssl 上;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

ssl_certificate /etc/ssl/certs/yourdomain.com.crt;
ssl_certificate_key /etc/ssl/private/yourdomain.com.key;

地点 / {
proxy_pass http://127.0.0.1 :8080/;

   proxy_http_version 1.1;
   proxy_set_header Upgrade $http_upgrade;
   proxy_set_header Connection "upgrade";
   proxy_read_timeout 600s;

   proxy_redirect    off;
   proxy_set_header  Host             $http_host;
   proxy_set_header  X-Real-IP        $remote_addr;
   proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
   proxy_set_header  X-Forwarded-Proto $scheme;
 }

}

我的域有 https 认证,如果我访问我的域,我会看到“欢迎使用 nginx!” 屏幕。 但是,在我启动我的应用程序以使用以下命令侦听端口 8080 后:
docker run -d -v /var/run/docker.sock:/var/run/docker.sock --net wind_net -p 8080:8080 wind_container
如果我访问我的域,我仍然会看到“欢迎使用 nginx!” 屏幕。 Nginx 没有将我的域传递给我闪亮的应用程序。 关于为什么代理反向不起作用的任何想法? 我是否将我的容器化闪亮应用程序启动到了错误的端口?

question

最有用的评论

我已经解决了这个问题。 Nginx 没有显示 Shinyproxy 应用程序,因为我忽略了将 /etc/nginx/sites-available/ 中的 nginx 配置文件链接到 /etc/nginx/sites-enabled。 使用ls -s命令链接我在两个目录中的配置并从 /etc/nginx/sites-enabled 中删除默认配置文件后,shinyproxy 应用程序显示在我的域中。

所有7条评论

您的反向引擎 proxy_pass 指令路由到主机本地网络 (127.0.0.1)。 当你容器化你的应用程序时,你正在从本地主机网络转移到 docker 生态系统网络。 因此,您如何启动和发布您的 Shinyproxy 到主机很重要。 查看这篇关于docker 网络的文章

感谢您的帮助。 在阅读了文章并进行了更多故障排除后,我仍然没有找到解决方案。 我需要更改代理通行证的 127.0.0.1 部分吗? 或者我是否需要启动我的 docker 容器来收听 8080:8080 以外的其他地方?

你如何启动你的闪亮代理?

嗨@lucius-verus-fan

可以肯定的是,使用以下命令您正在尝试启动 ShinyProxy,对吗?

 docker run -d -v /var/run/docker.sock:/var/run/docker.sock --net wind_net -p 8080:8080 wind_container

那么wind_container是您创建的包含 ShinyProxy 的客户容器吗?

在这种情况下,我认为问题与 Docker 网络无关,命令的-p 8080:8080部分确保将端口 8080 转发到您的本地机器,与容器在哪个 docker 网络中运行无关。

相反,我认为错误出在您的 nginx 配置中,您必须更改这些行以匹配您的设置:

server_name shinyproxy.yourdomain.com;
rewrite ^(.*) https://$server_name$1 permanent;
# a few lines lower
server_name shinyproxy.yourdomain.com;

您必须在那里指定服务器的正确域名。 现在您告诉 nginx 将shinyproxy.yourdomain.com上的任何请求作为对 ShinyProxy 的请求进行处理,任何其他请求都将导致 404。因此,由于您没有通过shinyproxy.yourdomain.com访问它,nginx 会给你是404。

你好@LEDfan@jaysnm

我用来启动 ShinyProxy 的命令是:
docker run -d -v /var/run/docker.sock:/var/run/docker.sock --net wind_net -p 8080:8080 wind_container

我在第一条评论中附加的 nginx 配置不是我正在使用的 nginx 配置,这是 Shinyproxy 网站上给出的示例。 我将在下面附上我正在使用的 nginx 配置文件。

server {
  listen                80;
  server_name           windts.app www.windts.app;
  rewrite     ^(.*)     https://$server_name$1 permanent;
}

server {
  listen                443 ssl;
  server_name           windts.app www.windts.app;
  access_log            /var/log/nginx/shinyproxy.access.log;
  error_log             /var/log/nginx/shinyproxy.error.log error;

  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

  ssl_certificate       /etc/ssl/certs/windts.app.crt;
  ssl_certificate_key   /etc/ssl/private/windts.app.key;

   location / {
       proxy_pass          http://127.0.0.1:8080/;

       proxy_http_version 1.1;
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection "upgrade";
       proxy_read_timeout 600s;

       proxy_redirect    off;
       proxy_set_header  Host             $http_host;
       proxy_set_header  X-Real-IP        $remote_addr;
       proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
       proxy_set_header  X-Forwarded-Proto $scheme;
     }

}

当访问域 windts.app 或www.windts.app 时,您将被发送到 Nginx 欢迎页面,而不是被传递到 Shinyproxy 应用程序。 该应用程序可以在本地以及远程服务器上正确运行。 这只是将域连接到运行 Shinyproxy 应用程序的容器的问题。

我已经解决了这个问题。 Nginx 没有显示 Shinyproxy 应用程序,因为我忽略了将 /etc/nginx/sites-available/ 中的 nginx 配置文件链接到 /etc/nginx/sites-enabled。 使用ls -s命令链接我在两个目录中的配置并从 /etc/nginx/sites-enabled 中删除默认配置文件后,shinyproxy 应用程序显示在我的域中。

作为记录,它是ln -s [原文如此],但感谢您分享反馈,并且很好地解决了您的问题!

此页面是否有帮助?
0 / 5 - 0 等级