nginx服务器配置/websocket nginx 配置笔记

nginx服务器配置/websocket nginx 配置笔记

server {
    listen 80;
    server_name xxx.com;
    # add_header    '*' ;
    location /u/ {
        # 反向代理透传客户端ip
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;

        proxy_pass http://127.0.0.1:8001;
        proxy_redirect off;
    }

    location /c/ {
        proxy_pass http://127.0.0.1:8002;
        # WebScoket Support
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        proxy_set_header Origin xxx;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;
    }
}

 

先备份一波这个配置。

首先为服务器设置监听端口,然后是服务的域名。

location的具体用法可以参看reference的第二篇文章介绍得非常详细。我这里使用/u/匹配我的路径以/u/开头下都使用这个下面{}中的配置。

下面我依次介绍各参数作用:

proxy_set_header X-Real-IP $remote_addr;               # 远端真实ip地址
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 反向代理之后转发之前的ip地址 proxy_set_header Host $http_host;                  # http请求的主机域名 proxy_set_header X-NginX-Proxy true;                # nginx代理

这些参数都是在nginx反向代理中使用的。

proxy_pass http://127.0.0.1:8001; # 反向代理转发地址 proxy_redirect off; # 代理是否支持重定向

 

下面匹配/c/路径下的,是我的websocket转发服务。跟上面不同的是,他需要再header里面加入下面内容

proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade";

升级http1.1到 websocket协议。另外有一个特别值得注意的地方是,如果websocket服务器在收到websocket握手包,查看Origin信息与所在域信息不符的话。会直接拒绝服务。这点很坑,我花了接近半天的时间来找为什么连不上的原因,最后竟然发现是Origin 必须和请求地址在一个域,不然会被拒绝访问并且返回403.

另外以上的所有配置里面的变量都是可以通过get_header里面的信息拿到并且获取的。

 

根据各不同想更详细查看配置的 可以查阅nginx的官网和reference。

以上。

 

Reference:

https://segmentfault.com/n/1330000006925038 nginx 配置文件梳理

http://seanlook.com/2015/05/17/nginx-location-rewrite/ nginx配置location总结及rewrite规则写法

http://www.ha97.com/5194.html (总结)Nginx配置文件nginx.conf中文详解

http://nginx.org/en/docs/http/websocket.html WebSocket proxying

 

https://www.cnblogs.com/piperck/p/7066286.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/113646.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 使用netty4.x 编写TCP服务器关于握手问题

    使用netty4.x 编写TCP服务器关于握手问题

    2021年9月8日
    68
  • C++中如何获取终端输出的行数,C++清除终端输出特定的一行内容

    C++中如何获取终端输出的行数,C++清除终端输出特定的一行内容

    2022年2月7日
    55
  • Ubuntu16.04安装ros_nodejs安装教程

    Ubuntu16.04安装ros_nodejs安装教程Ubuntu16.04安装ROS详解1、设置sources.list2、设置key3、更新package4、安装ROSkinetic完整版5、初始化rosdep6、配置ROS环境7、安装依赖项8、测试ROS是否安装成功1、设置sources.listsudosh-c’echo"debhttp://packages.ros.org/ros/ubuntu$(lsb_release-…

    2025年8月31日
    4
  • Apache Tomcat 安装配置图文详细教程[通俗易懂]

    Apache Tomcat 安装配置图文详细教程[通俗易懂]一、安装JDK步骤及配置JDK环境变量步骤省略。二、安装Tomcat(提前请先安装JDK)1.下载好压缩包后,直接解压至某一目录下,目录中不能包含中文。解压后如图所示:2.将此文件夹拷贝到你常用的根目录下。这样就算安装好了!3.接下来开始配置环境变量,打开环境变量同上操作,不在赘述。然后新建一个系统变量:TOMCAT_HOME=C:\Java\Tomcat\apache-tomcat-7.0.90…

    2022年6月9日
    43
  • c语言里面的枚举有啥作用,C语言枚举enum

    c语言里面的枚举有啥作用,C语言枚举enumC 语言枚举 enum 教程枚举是枚举的作用就是给我们常用的 C 语言枚举 enum 定义详解语法 enum 枚举名 枚举元素 1 枚举元素 2 枚举元素 3 参数参数描述 enum 定义枚举类型所使用的关键字 枚举名枚举的变量名 枚举元素 1 枚举元素 2 枚举元素 3 枚举的元素列表 说明我们使用 enum 关键字 定义了一个枚举变量 该枚举变量有三个元素 C 语言枚举 enum 变量定义详解语法 enum 枚举名 varn

    2025年7月12日
    2
  • vs安装本地nuget包(vs2015离线使用)

    今天想在项目中使用RestSharp,不过在nuget控制台中发现要么新版本不支持.net4.0,要么用老版本的下载不下来,最后没办法,在RestSharp网站上下载了离线安装包,怎样安装呢?方法之一,概括而言就是把安装包放在NuGet下载缓存目录下,下面就来打开目录:1.Tool-NuGetPackageManager-PackageManagerSettings2…

    2022年4月12日
    1.3K

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号