最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Nginx配置WebSocket代理的示例代碼

 更新時間:2024年10月14日 09:41:55   作者:楓飄長安  
本文提供了關于Nginx的配置和日志記錄的詳細指南,介紹了如何使用whereis命令查找Nginx路徑,并通過man命令查看手冊,同時,詳解了解Nginx訪問日志的配置方法及參數含義,并分享了Nginx代理WebSocket的配置示例,感興趣的可以了解一下

Nginx 官方文檔網址 nginx documentation

...
http:{
  ...
  server{
    ...
    # WebSocket代理
    location /wsUrl/ {
      rewrite ^/wsUrl/(.*)$ /$1 break; #攔截標識去除
      proxy_pass http://192.168.100.20:8080; #這里是http不是ws,不用懷疑,代理的ip和port寫ws訪問的實際地址
      proxy_http_version 1.1; #這里必須使用http 1.1
      #下面兩個必須設置,請求頭設置為ws請求方式
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
    }
    ...
  }
  ...
}

官方文檔代理樣例

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    
    map $http_upgrade $connection_upgrade {
		default upgrade;
		''      close;
	}
	
    server {
        listen       9001;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
        }

        location ^~ /websocket {
            proxy_pass http://localhost:8090/;
            proxy_http_version 1.1;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_read_timeout 120s;

            proxy_set_header Upgrade websocket;
            proxy_set_header Connection Upgrade;
        }
    }
}

Linux 查看安裝文件命令手冊

[!起因]
我使用指令 whereis nginx 跳出來了很多路徑,但是我不太明白每個路徑是什么意思,就仔細去看了看,然后發(fā)現了一個路徑 /usr/share/man/man8/ 這個目錄,下面一般都是手冊路徑,在這里面可以看很多軟件的基本指令操作 可使用指令 man nginx 來查看 nginx.8.gz 手冊。

Nginx 日志配置方案

可以參考 Nginx訪問日志(access_log)配置及信息詳解

一般使用 main 格式

如下

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"'
                       '$upstream_addr $upstream_response_time $request_time ';
access_log  logs/access.log  main;
  • $remote_addr: 客戶端的IP地址。
  • $remote_user: 使用HTTP基本身份驗證的情況下,遠程用戶的用戶名。
  • $time_local: 本地時間的訪問時間。
  • $request: 客戶端請求的內容。
  • $status: 服務器響應的HTTP狀態(tài)碼。
  • $body_bytes_sent: 發(fā)送給客戶端的字節(jié)數,不包括響應頭的大小。
  • $http_referer: 引用頁面的URL。
  • $http_user_agent: 客戶端的User-Agent字符串,標識客戶端的瀏覽器和操作系統等信息。
  • $http_x_forwarded_for: X-Forwarded-For 頭,用于標識原始客戶端的IP地址,當請求通過代理服務器時使用。
  • $upstream_addr: 后端(上游)服務器的IP地址。
  • $upstream_response_time: 從后端服務器接收響應的時間。
  • $request_time: 客戶端發(fā)起請求到收到響應的總時間。

[!錯誤]
配置 nginx 日志的時候,由于不知道要將 log_format main 配置放在哪里,就放在了最外層,導致錯誤提示 nginx: [emerg] "log_format" directive is not allowed here in /etc/nginx/nginx.conf:14后序解決是 將 log_format main 放在 http {} 里面就解決問題了

成功解決問題–使用 Nginx 代理 WebSocket

nginx.conf具體配置如下, 實現的功能是將所有發(fā)往 10.6.30.185:9001 的請求去匹配一下 url里面有沒有 /websocket 這一級,如果有就使用 WebSocket 請求發(fā)往 10.6.3.46:8001 ,后序使用了6臺服務器進行了一個 nginx 代理 WebSocket 操作,都能夠在后臺讀取到信息,同時,后臺也能夠推送信息過去。

user nobody;  
worker_processes  6;  
  
  
#nginx 開啟多核設置,目前185的機子,都是6核  
worker_cpu_affinity 000001 000010 000100 001000 010000 100000;  
#error_log  logs/error.log;  
#error_log  logs/error.log  notice;  
#error_log  logs/error.log  info;  
  
  
error_log  /var/log/nginx/error.log info;  
  
#進程文件  
pid        /var/run/nginx.pid;  
  
worker_rlimit_nofile 1024;  
  
events {  
    use epoll; # 修改這里  
    worker_connections  1024;  
}

# 設置http 服務器  
http {  
    include       mime.types; #文件擴展名與文件類型映射表  
    default_type  application/octet-stream; #默認文件類型  
    charset utf-8; #默認編碼  
    fastcgi_connect_timeout 2000;  
    fastcgi_send_timeout 2000;  
    fastcgi_read_timeout 2000;  
    client_max_body_size 1024m;  
    sendfile on;  
    tcp_nopush on;  
    tcp_nodelay on;  
    keepalive_timeout 120;  
    gzip  on;  
    limit_req_zone $binary_remote_addr zone=test:10m rate=10r/s;  
  
    #日志配置  
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '  
                          '$status $body_bytes_sent "$http_referer" '                          '"$http_user_agent" "$http_x_forwarded_for"'                           '$upstream_addr $upstream_response_time $request_time ';  
            #$remote_addr: 客戶端的IP地址。  
            #$remote_user: 使用HTTP基本身份驗證的情況下,遠程用戶的用戶名。  
            #$time_local: 本地時間的訪問時間。  
            #$request: 客戶端請求的內容。  
            #$status: 服務器響應的HTTP狀態(tài)碼。  
            #$body_bytes_sent: 發(fā)送給客戶端的字節(jié)數,不包括響應頭的大小。  
            #$http_referer: 引用頁面的URL。  
            #$http_user_agent: 客戶端的User-Agent字符串,標識客戶端的瀏覽器和操作系統等信息。  
            #$http_x_forwarded_for: X-Forwarded-For 頭,用于標識原始客戶端的IP地址,當請求通過代理服務器時使用。  
            #$upstream_addr: 后端(上游)服務器的IP地址。  
            #$upstream_response_time: 從后端服務器接收響應的時間。  
            #$request_time: 客戶端發(fā)起請求到收到響應的總時間。  
    access_log /var/log/nginx/nginx-access.log main;
	map $http_upgrade $connection_upgrade {  
	    default upgrade;  
	    ''      close;  
	}
    server {  
        listen 9001;  
        server_name  10.6.30.185;  
        location ^~ /websocket {  
            proxy_pass http://10.6.3.46:8001;  
            proxy_http_version 1.1;  
            proxy_set_header Host $host;  
            proxy_set_header X-Real-IP $remote_addr;  
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
            proxy_read_timeout 120s;  
            proxy_set_header Upgrade $http_upgrade;  
            proxy_set_header Connection $connection_upgrade;  
        }  
    }  
}

可能出現的問題

  • 同一個網關出來的 IP 可能會重復,所以如果我想要做一個具體的指定連接的WebSocket IP集合中,key 必須是 mac 地址 value 是 `連接的對象信息
  • 能指定發(fā)消息的需求

 到此這篇關于Nginx配置WebSocket代理的示例代碼的文章就介紹到這了,更多相關Nginx WebSocket代理內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 如何使用Nginx配置將80端口重定向到443端口

    如何使用Nginx配置將80端口重定向到443端口

    這篇文章主要為大家詳細介紹了如何將Nginx配置為將HTTP(80端口)請求重定向到HTTPS(443端口),文中的示例代碼講解詳細,有需要的小伙伴可以參考一下
    2025-04-04
  • nginx編譯安裝出現的常見錯誤及解決方法

    nginx編譯安裝出現的常見錯誤及解決方法

    這篇文章給大家介紹了nginx在編譯安裝過程中容易出現的常見錯誤以及解決方法,文中有詳細的代碼講解,對我們的學習或工作有一定的幫助,需要的朋友可以參考下
    2023-08-08
  • Nginx?Socket代理的實現方法

    Nginx?Socket代理的實現方法

    Nginx的socket代理通常指的是Nginx通過stream模塊來處理非HTTP的?TCP?流量,本文就來介紹一下Nginx?Socket代理的實現方法,具有一定的參考價值,感興趣的可以了解一下
    2024-04-04
  • Nginx動態(tài)配置upstream的使用小結

    Nginx動態(tài)配置upstream的使用小結

    本文深入探討了Nginx動態(tài)配置upstream的多種方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-12-12
  • 升級nginx以支持http2的方法

    升級nginx以支持http2的方法

    本篇文章主要介紹了升級nginx以支持http2的方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • 解決Nginx安裝完成,沒有sbin目錄如何啟動的問題

    解決Nginx安裝完成,沒有sbin目錄如何啟動的問題

    用戶安裝Nginx后因未生成sbin目錄導致啟動失敗,嘗試多種方法無效,最終發(fā)現需正確指定安裝路徑,進入/usr/local/nginx/sbin目錄執(zhí)行./nginx啟動,或通過服務腳本啟動
    2025-09-09
  • centos6.4下nginx1.12.1安裝教程

    centos6.4下nginx1.12.1安裝教程

    這篇文章主要為大家詳細介紹了centos6.4下nginx1.12.1安裝教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • Nginx檢查配置文件是否正確的實現

    Nginx檢查配置文件是否正確的實現

    文章簡要介紹了如何檢查Nginx配置文件是否正確的方法,包括進入配置文件路徑、返回結果判斷正確性以及兩種啟動方式,希望對大家有所幫助
    2025-11-11
  • Linux安裝Nginx步驟詳解

    Linux安裝Nginx步驟詳解

    這篇文章主要介紹了Linux安裝Nginx步驟,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • Nginx的auth_request模塊的應用小結

    Nginx的auth_request模塊的應用小結

    Nginx的auth_request模塊通過子請求實現動態(tài)鑒權,支持JWT驗證、API鑒權等場景,本文就來詳細的介紹auth_request模塊的使用,具有一定的參考價值,感興趣的可以了解一下
    2026-04-04

最新評論

湘乡市| 河源市| 易门县| 克什克腾旗| 通道| 清新县| 杭锦后旗| 兰州市| 柳林县| 永康市| 绵阳市| 鲜城| 南通市| 英山县| 澳门| 松原市| 舞阳县| 南澳县| 泸定县| 黄龙县| 石景山区| 延庆县| 湟中县| 托克逊县| 江阴市| 闵行区| 万全县| 鲜城| 贵南县| 南江县| 民县| 屏南县| 陈巴尔虎旗| 晋城| 石嘴山市| 石楼县| 石泉县| 河南省| 娱乐| 紫阳县| 界首市|