nginx 在同一 url 上具有 websocket 和 https 内容

2024-02-07

我的服务器提供了一个根 URL,采用 https:

  • 文件、剩余资源
  • 网络套接字

我希望我的配置支持 websocket,但它不起作用。

我使用 nginx 1.3.16,它支持 websocket 代理。

这是我的 nginx 配置的一部分:

    map $http_upgrade $connection_upgrade {
        default upgrade;
        ''      close;
    }

server {
    listen 443 default ssl;
    server_name localhost;

    ssl                        on;
    ssl_certificate        ssl/server.crt;
    ssl_certificate_key  ssl/server.key;

    ssl_protocols        SSLv3 TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers RC4:HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;
        keepalive_timeout    60;
    ssl_session_cache    shared:SSL:10m;
        ssl_session_timeout  10m;

    ### We want full access to SSL via backend ###
        location / {
        proxy_pass http://localhost:8080;       

            ### force timeouts if one of backend is died ##
                proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;

            ### Set headers ####
                    proxy_set_header        Accept-Encoding   "";
                proxy_set_header        Host            $host;
                proxy_set_header        X-Real-IP       $remote_addr;
                proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;

            ### Most PHP, Python, Rails, Java App can use this header ###
            #proxy_set_header X-Forwarded-Proto https;##
            #This is better##
                proxy_set_header        X-Forwarded-Proto $scheme;
            add_header              Front-End-Https   on;

        ### By default we don't want to redirect it ####
            proxy_redirect     off;
      }
    location /writever/chat {
        proxy_pass http://localhost:8080/writever/chat;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

这是我在 nginx 中看到的错误:

2013/04/23 22:41:52 [error] 17011#0: *2093 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "GET /writever/chat?X-Atmosphere-tracking-id=0&X-Atmosphere-Framework=1.0.12&X-Atmosphere-Transport=websocket&X-Cache-Date=0&Content-Type=application/json&X-atmo-protocol=true HTTP/1.1", upstream: "http://127.0.0.1:8080/writever/chat?X-Atmosphere-tracking-id=0&X-Atmosphere-Framework=1.0.12&X-Atmosphere-Transport=websocket&X-Cache-Date=0&Content-Type=application/json&X-atmo-protocol=true", host: "localhost"

我不确定这两个位置是否可以一起工作,如果顺序很重要,因为“/”包含/writever/chat。

任何帮助将不胜感激。


update:我还保留着以前的 nginx 版本。清洁后,一切似乎都正常。因此,我将保留此配置,直到找到问题或更好的东西。我会让你知道。


如上所述,我的问题是 nginx 安装不正确。

彻底卸载任何

目前你必须手动完成(还没有 apt-get):

sudo apt-get install build-essential libssl-dev zlib1g-dev

pcre

cd ~/src #make this if it doesn't exist
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.30.tar.gz
tar -xzvf pcre-8.30.tar.gz
cd pcre-8.3X/
./configure # /usr/local is the default so no need to prefix
make
sudo make install
sudo ldconfig # this is important otherwise nginx will compile but fail to load

nginx

wget http://nginx.org/download/nginx-1.4.0.tar.gz   -> check for latest version on nginx website
tar -xvzf nginx-1.4.0.tar.gz
cd nginx-1.4.0

./configure --with-http_flv_module \
--with-http_ssl_module \
--with-http_gzip_static_module

make
sudo make install (uninstall previous version if nginx before)

source https://jamiecurle.co.uk/blog/compiling-nginx-ubuntu/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

nginx 在同一 url 上具有 websocket 和 https 内容 的相关文章

  • Netty:正确关闭 WebSocket

    如何从服务器端正确关闭 WebSocket 通道 连接 如果我使用一个ctx getChannel close the onerror在浏览器 Firefox 9 中抛出 页面加载时与 ws localhost 8080 websocket
  • Nginx - 自定义 404 页面

    Nginx PHP 在 fastCGI 上 对我来说非常有用 当我输入不存在的 PHP 文件的路径时 我不会得到默认的 404 错误页面 任何无效的 html 文件都会出现该错误页面 而只会得到 未指定输入文件 如何自定义此 404 错误页
  • 使用 jar 外部的配置启动 .jar,但能够从任何当前目录执行此操作

    我一直在努力解决一个特定的问题 我在 jar 文件中有一个 Java 程序 并且在 jar 之外有一个 lib 目录和一个 config 目录 但与 jar 本身所在的目录位于同一目录中 我正在尝试参考config foo config从代
  • nginx docker 容器:502 错误网关响应

    我有一个服务监听 8080 端口 这不是一个容器 然后 我使用官方镜像创建了一个 nginx 容器 docker run name nginx d v root nginx conf etc nginx conf d p 443 443 p
  • 错误:从上游读取响应标头时上游过早关闭连接 [uWSGI/Django/NGINX]

    我目前在用户正在进行的查询中总是得到 502 它通常返回 872 行 在 MySQL 中运行需要 2 07 然而 它返回了大量信息 每一行包含很多东西 有任何想法吗 运行 Django tastypie Rest API Nginx 和 u
  • 通过 Websockets 进行 WebRTC 视频聊天

    我正在尝试使用 webRTC 和 WebSockets 进行信号发送来开发视频聊天应用程序 我的问题是 我不知道创建 RTCPeerConnection 并通过 webSocket 连接两个对等点 2 个浏览器 的过程是什么 至少在本地 我
  • Django + uwsgi + ngnix + 调试关闭 = 服务器错误(500)

    我正在尝试设置一个由 Django uwsgi Nginx 组成的生产服务器 我正在关注的教程位于此处http www panta info blog 3 how to install and configure nginx uwsgi a
  • 使用 WebSocket 是否会产生服务器成本?

    我已经离开了 PHP MySQL 的舒适区 因为语法 封装 过程的东西可能会让人沮丧 上周 我开始尝试并按照一些教程使用 Node js Socket IO 创建实时聊天应用程序 到目前为止 我从未使用过 WebSockets 做过任何事情
  • C# SignalR 异常 - 连接在收到调用结果之前开始重新连接

    我正在开发 2 个应用程序 第一个是 C 控制台应用程序 另一个是 Asp net Web 应用程序 我正在使用 SignalR 连接两者 这是我的 C 控制台应用程序 客户端 public class RoboHub public sta
  • 将应用程序级别用户名/用户 ID 注入 nginx/Apache 日志

    有没有办法将应用程序级别的用户名或 id 在本例中为 django 用户名或 id 注入 Apache 或 ngnix 日志中 请注意 我不是询问 HTTP 身份验证用户名 我目前正在使用一个简短的自定义中间件将此数据添加到响应标头 如下所
  • 使用单个“proxyServer”将 Websocket 代理到多个目标

    我正在开发一个nodeJS websocket代理服务器 用例是当 websocket 请求到来时 我将检查其凭据 添加新标头 然后根据其组 来自用户 ID 将 websocket 连接重定向到其目标 webscoket 服务器 我发现大多
  • 常规请求期间 Django AJAX 请求未通过

    我有一个带有登录网页的 Django 站点 当提交页面上的登录表单时 它会执行登录视图 该视图会在其中运行一个需要很长时间处理 30秒左右 的函数 因此 为了在登录期间向客户端显示进度 一旦提交表单 登录页面上的 JS 函数就会开始向服务器
  • 使用nginx容器作为反向代理时的原始url

    我有一个 Web 应用程序部署为码头集装箱 我也有一个nginx容器 使用dnsmasq解析器 设置为充当 Web 应用程序前面的反向代理 它的 80 端口映射到主机 我的应用程序使用 SSO 身份验证 当我使用身份提供商登录时 回调 ur
  • 用于配置编辑的 wix 自定义对话框

    你好 我正在尝试使用 wix v3 为我的应用程序设置 msi 我对这项任务有疑问 我需要一个用户输入 该输入将存储在我的应用程序的配置文件中 例如 我需要一个用于 sql 连接字符串的对话框 并且用户输入将写入应用程序配置文件中 我尝试用
  • Magento:设置刚刚创建的网站的配置值?

    我正在以编程方式创建网站 用户等 问题是 创建网站时 我无法立即设置配置值 Code
  • Openresty 中的并发模型是什么?

    我很难理解 openresty 或 nginx 的并发模型 我读了Lua变量作用域 http wiki nginx org HttpLuaModule Lua Variable Scope 它解释了变量的生命周期 但它没有说明对它们的并发访
  • Nginx - Heroku Docker - 是否可以在 Heroku 上运行 Nginx 作为反向代理

    我试图弄清楚如何使用 Nginx 在 Heroku 应用程序上构建反向代理 问题是 Heroku 似乎每个应用程序只接受一个容器 但我的应用程序系统至少会使用三个容器 一个用于 Nginx 一个用于我的应用程序前端 一个用于我的业务逻辑服务
  • 使用 Nginx 在 Docker 容器内部署带有路由器的 Angular2

    我正在尝试部署一个使用框架的路由器功能的 Angular 2 但在 docker 容器内使用 nginx 为其提供服务时遇到一些问题 由 angular cli 构建的 Angular 应用程序具有如下文件结构 dist 08c42df75
  • Jetty、websocket、java.lang.RuntimeException:无法加载平台配置器

    我尝试在 Endpoint 中获取 http 会话 我遵循了这个建议https stackoverflow com a 17994303 https stackoverflow com a 17994303 这就是我这样做的原因 publi
  • Nginx merge_slashes 重定向

    我在我的 Java 应用程序中使用 nginx 我的问题是 nginx 正在合并斜杠 我无法将我的网站重定向到正确的版本 例如 http goout cz cs koncerty praha 被合并到 http goout cz cs ko

随机推荐

  • 在匹配元素处划分列表的 Pythonic 且有效的方法是什么?

    这非常类似于Python 根据条件拆分列表 https stackoverflow com questions 949098 python split a list based on a condition并且https nedbatche
  • 为 NSTableView 中的行着色

    我想要做的是当单击 I 按钮时设置 NSTableView 中所选行的背景颜色 我见过人们使用过的其他案例tableView willDisplayCell forTableColumn row and setBackgroundColor
  • Elasticsearch - 维护文档历史记录

    我是 Elasticsearch 的新手 有一个非常基本的问题要问 我计划使用 Elasticsearch 作为文档存储 并且在存储文档时 我的要求之一是维护历史数据 因此 我可以成功地将文档发布到 Elasticsearch 但是当我发布
  • Perl 中哈希数组树的路径列表

    我有一系列路径 C A C B C D AB 我希望将它们放在哈希数组树中 这样我就可以在 TT2 模板中遍历它们 我的意思是这样的 dirs name gt C subs gt name gt A subs gt name gt B su
  • 在 Android Studio 中使用 NDK、Gradle 和 CMake 链接外部库

    经过一段时间的间隔后 我又回到了 Android 开发 我的旧的基于 ANT 的构建链似乎不再与最新的 SDK 一起运行 这是一个单独的问题 所以我尝试以新的方式做事 这是基于gradle 和 CMake 我的项目需要许多预构建的静态和动态
  • 使用自定义文件格式创建 TensorFlow 数据集

    我正在尝试创建一个 tf data Dataset 其中文件名映射到深度图像 我的图像保存为原始二进制文件 每个文件 320 240 4 字节 图像为 320x240 像素 用 4 个字节表示一个像素 我无法弄清楚如何创建一个解析函数 该函
  • 更改 MariaDB 中的列名称

    我在这个数据库中有此列 其中包含空格键 我想更改它 ALTER TABLE CHANGE COLUMN Anzahl Personen AnzahlPersonen int 11 在命令行中使用此行后 输出如下 ERROR 1064 420
  • 使用敏感设置信息部署到 Heroku

    我使用 GitHub 来存储代码 使用 Heroku 作为 Rails 应用程序的部署平台 我不想在 Git 下保存敏感数据 此类数据包括数据库文件设置 database yml 和一些具有秘密 API 密钥的其他文件 当我部署到herok
  • 从命令行查找并替换 unix

    我有一个多行文本文件 其中每行都有格式 Game 29832 我想将字符 1 附加到每行的每个数字 每行都不同 有谁知道如何从命令行执行此操作 Thanks sed i e s Game 0 9 1 file i用于就地编辑 并且 表示与模
  • 在 NodeJS 中对 SAML2 请求进行数字签名

    我想要对以下 SAML 请求进行数字签名
  • 在服务器套接字java中从客户端获取数据

    我正在创建一个执行以下任务的服务器应用程序 接受客户端的连接 将每个客户端连接处理到单独的线程 接收来自客户端的数据 发送数据给客户端 我能够连接客户端 但无法从客户端接收数据 仅当该客户端断开连接时 数据才在我的控制台中可见 Code p
  • 自动终止 mysql 睡眠进程的 Shell 脚本

    我们如何杀死 mysql 睡眠进程 例如 Id User Host db Command Time State Info
  • php echo 和 return 在 jQuery ajax 调用方面的区别[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我在使 jQuery Ajax 调用
  • 如何验证日期不是 .net c# 中的未来日期

    只是徘徊 我如何验证该日期不是 net c 中的未来日期 Example 我已在那里应用了验证以进行所需的字段验证 但不知何故 我不知道如何应用验证来检查开始日期 以确保它不是未来日期 日期不大于当前日期 tr td align right
  • 如何使用 QFileDialog 选项并检索 saveFileName?

    我正在尝试使用 QFileDialog 提示用户提供文件名和保存文本文件的位置 我尝试了 QtGui QFileDialog getSaveFileName 但我对使用某些选项感兴趣 例如设置默认后缀 以及启用保存文件对话框的详细信息视图
  • 在 Node.js 中处理循环内的查询

    在下面的代码中 由于异步行为 val 变量值不断变化并生成意外的输出 即在第一个循环的连接查询完成之前 var 变量根据第二个循环并生成错误的输出 处理循环中查询的最佳方法是什么避免由异步性质引起的特性 var output for var
  • Sql Server 行大小限制和表设计

    我在 SQL Server 2008 上有这个查询 CREATE TABLE MediaLibrary MediaId bigint NOT NULL IDENTITY 1 1 MediaTypeId smallint NOT NULL I
  • 使用 htaccess 移动设备重定向到桌面版本

    我有一个网站叫 www example com 我有一个移动网站 名为 m example com 首先 我想自动从桌面版本重定向到移动网站 如果仅是移动网站 我想检测所有移动版本 然后我想使用 htaccess 自动将主网站 URL 重定
  • 当通过引用/依赖项添加不起作用时,如何将 System.Windows.Forms 添加到 WPF 应用程序?

    遵循各地的每个指南 Step 1 第2步 有效 好哇 但事实并非如此 相反 我得到黄色三角形 这个项目目前很小 因为我才刚刚开始 关于黄色三角形的指南讨论了冲突 但这里的情况并非如此 我几乎没有导入或使用过任何东西 显然这是由于使用 Net
  • nginx 在同一 url 上具有 websocket 和 https 内容

    我的服务器提供了一个根 URL 采用 https 文件 剩余资源 网络套接字 我希望我的配置支持 websocket 但它不起作用 我使用 nginx 1 3 16 它支持 websocket 代理 这是我的 nginx 配置的一部分 ma