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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • show partitions 分区查询

    show partitions 分区查询前言查询的分区情况程序Jupyter#导入信息frompyspark.sqlimportSparkSession,RowfrompysparkimportSQLContextfrompyspark.sql.functionsimportudf,col,explode,collect_set,get_json_object,concat_ws,splitfrompyspark.sql.typesimportStringType,IntegerTy

  • Go适合做什么?为何这么多人偏爱Go语言?

    Go作为Google2009年推出的语言,其被设计成一门应用于搭载Web服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。对于高性能分布式系统领域而言,Go语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并行的支持,这对于游戏服务端的开发而言是再好不过了。到现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。哪些大公司在使用Go语言:1、Goog…

  • springboot2.0整合redis_灰度发布的方式

    springboot2.0整合redis_灰度发布的方式一、简介1、发布订阅SUBSCRIBE,UNSUBSCRIBE和PUBLISH实现了发布/订阅消息范例,发送者(publishers)不用编程就可以向特定的接受者发送消息(subscribers).Rather,发布的消息进入通道,不需要知道有没有订阅者.订阅者发表感兴趣的一个或多个通道,并且只接受他们感兴趣的消息,不管发布者是不是存在.发布者和订阅者的解耦可以允许更大的伸缩性和更多动态的网络拓扑。2、说明本篇文章是继:【SpringBoot】三十四、SpringBoot

  • Pythonista中文文档[通俗易懂]

    Pythonista中文文档[通俗易懂]本文档为Pythonista3.3版本官方文档的汉化版,主要为帮助不是很擅长英文的朋友进行阅读学习。本文档主要针对Pythonista中iOS独有的模块进行汉化,第三方模块仅提及一下以便知晓目前Py

  • java gb2312中文乱码_Java中文乱码问题(转)

    java gb2312中文乱码_Java中文乱码问题(转)大家在JSP的开发过程中,经常出现中文乱码的问题,可能一至困扰着大家,现把JSP开发中遇到的中文乱码的问题及解决办法写出来供大家参考。首先了解一下Java中文问题的由来:Java的内核和class文件是基于unicode的,这使Java程序具有良好的跨平台性,但也带来了一些中文乱码问题的麻烦。原因主要有两方面,Java和JSP文件本身编译时产生的乱码问题和Java程序于其他媒介交互产生的乱码问题。…

  • 也许有用(也谈VC中ModifyStyle&ModifyStyleEx无法改变控件的Style)[通俗易懂]

    也许有用(也谈VC中ModifyStyle&ModifyStyleEx无法改变控件的Style)[通俗易懂] 一个View中用到了一个CListCtrl,在OnInitialUpdate函数里面他调用了m_listCtrl.ModifyStyleEx(0,LVS_EX_FULLROWSELECT);但是结果是并没有改变View中这个ListCtrl的效果。     仔细的查阅了MSDN的关于ModifyStyleEx的说明,发现没什么可以的地方,调试几遍发现也没异常,最后在网上一搜索Modi…

发表回复

您的电子邮箱地址不会被公开。

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