nginx配置wss協(xié)議的實(shí)現(xiàn)
需求:nginx配置websocket協(xié)議連接,(背景,在一個(gè)使用一個(gè)免費(fèi)的僅僅支持單域名的證書時(shí),既要支持https協(xié)議,也要支持wss協(xié)議時(shí),我們可以配置一個(gè)nginx根據(jù)不同的路徑去跳轉(zhuǎn))
我所使用的是華為云的免費(fèi)領(lǐng)取的一年的證書(因?yàn)閮H僅支持單域名所以才要根據(jù)域名后的路徑做不同的跳轉(zhuǎn))
項(xiàng)目的接口在內(nèi)部為127.0.0.1:8888/request/play
也就是本地通過 ws://localhost:28888 進(jìn)行socket連接,當(dāng)然因?yàn)槭褂糜蛎鹷ss,所以此處需要放到服務(wù)器 ws://你的服務(wù)器ip:8888/request/play (這樣訪問的前提是將8888加入開放端口)
在有證書的前提下上傳證書到服務(wù)器
首先設(shè)置二級(jí)域名解析
注意注冊(cè)證書時(shí),一定要和解析的子域名相對(duì)應(yīng)可參照(https://baijiahao.baidu.com/s?id=1726107421566695475&wfr=spider&for=pc)
#user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { client_max_body_size 200m;# 配置上傳文件大小最大為200m include mime.types; default_type application/octet-stream; sendfile on; server { # 監(jiān)聽443端口(https 和wss都是使用的默認(rèn)端口443) listen 443 ssl; # 你的域名(就是你解析后的域名與證書申請(qǐng)時(shí)域名保持一致) server_name game-test2.pro-lwwl2.com; #ssl 證書的pem文件路徑 # ssl證書的pem文件路徑 ssl_certificate /usr/local/nginx/ssl/scsgame.crt; # ssl證書的key文件路徑 ssl_certificate_key /usr/local/nginx/ssl/scsserver.key; ssl_session_timeout 5m; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; ################################# # 此處是我配置的vue上傳部署到服務(wù)器時(shí),解決首頁加載緩慢問題而設(shè)置的可以參考 # https://www.cnblogs.com/libaiyun/p/16462470.html #開啟gzip gzip on; # 啟用gzip壓縮的最小文件,小于設(shè)置值的文件將不會(huì)壓縮 gzip_min_length 1k; # 設(shè)置壓縮所需要的緩沖區(qū)大小 gzip_buffers 16 64k; # 設(shè)置gzip壓縮針對(duì)的HTTP協(xié)議版本 gzip_http_version 1.1; # gzip 壓縮級(jí)別,1-9,數(shù)字越大壓縮的越好,也越占用CPU時(shí)間 gzip_comp_level 9; gzip_types text/plain application/x-javascript application/javascript text/javascript text/css application/xml application/x-httpd-php image/jpeg image/gif image/png; # 是否在http header中添加Vary: Accept-Encoding,建議開啟 gzip_vary on; # 禁用IE6 gzip gzip_disable "MSIE [1-6]\."; ####################################### # 日志輸出路徑 access_log /home/server/vue_admin/logs/access.log; # 當(dāng)且僅當(dāng)https請(qǐng)求訪問到admin時(shí) # 訪問https://game-XXXX2.pro-lwwl2.com/admin就會(huì)跳轉(zhuǎn)到服務(wù)器的/home/server/vue_admin/dist下,取index.html來到vue項(xiàng)目的首頁 location /admin{ alias /home/server/vue_admin/dist; index index.html index.htm; } # 配置wss長連接通信協(xié)議 #當(dāng)請(qǐng)求wss://game-XXXX2.pro-lwwl2.com/game/request時(shí)候,就會(huì)發(fā)生路徑的跳轉(zhuǎn)到本地的http://127.0.0.1:8888/game/request;去通過內(nèi)網(wǎng)來匹配請(qǐng)求 location /game/request { proxy_pass http://127.0.0.1:8888/game/request; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_set_header X-NginX-Proxy true; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; proxy_connect_timeout 600s; proxy_read_timeout 600; proxy_send_timeout 600s; } # nginx配置文件下載路徑,實(shí)現(xiàn)nginx下載功能 #僅僅需要訪問https://game-XXXX2.pro-#lwwl2.com/resource/download/即可完成下載 location /resource/download { alias /home/server/resource/client; sendfile on; autoindex on; # 開啟目錄文件列表 autoindex_exact_size on; # 顯示出文件的確切大小,單位是bytes autoindex_localtime on; # 顯示的文件時(shí)間為文件的服務(wù)器時(shí)間 charset utf-8,gbk; # 避免中文亂碼 } # 訪問https://game-XXXX2.pro-#lwwl2.com/admin-api # 接口就會(huì)完成跳轉(zhuǎn)到本地的http://127.0.0.1:9021/端口以及路徑 location ^~ /admin-api/ { #匹配所有路徑以/gameTool開頭的請(qǐng)求 access_log /home/server/vue_admin/logs/access.log; proxy_set_header Host game-test.pro-lwwl.com; #設(shè)置請(qǐng)求域名 proxy_pass http://127.0.0.1:9021/; #配置內(nèi)網(wǎng)請(qǐng)求 } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } **一個(gè)nginx可以配置多個(gè)server 但是如果新增或者刪除server一定得停止nginx 而不是重啟nginx否則配置不生效** # server { # listen 9021; # server_name lwwl.com; #將請(qǐng)求轉(zhuǎn)成https #把http的域名請(qǐng)求轉(zhuǎn)成https # return 301 https://$host$request_url; # rewrite ^(.*:*) https://$server_name$1 permanent # } }
以上還需注意的是我們應(yīng)該區(qū)分一下配置location時(shí),我們應(yīng)該看清root alias 和proxy_pass 三者帶來路徑拼寫的差異,否則就會(huì)報(bào)404異常
到此這篇關(guān)于nginx配置wss協(xié)議的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)nginx wss協(xié)議內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Nginx配置SSL證書出現(xiàn)PEM_read_bio_PrivateKey() failed錯(cuò)誤解決
在配置GoDaddy的SSL證書并啟動(dòng)Nginx時(shí),可能遇到由于證書密鑰文件編碼問題導(dǎo)致的啟動(dòng)失敗,具體表現(xiàn)為nginx報(bào)錯(cuò):PEM_read_bio_PrivateKey() failed,本文就來介紹一下,感興趣的可以了解學(xué)習(xí)2024-10-10在nginx中實(shí)現(xiàn)單位時(shí)間內(nèi)限制訪問頻率的教程
這篇文章主要介紹了在nginx中實(shí)現(xiàn)單位時(shí)間內(nèi)限制訪問頻率的教程,并非針對(duì)IP而是全局的訪問量限制,需要的朋友可以參考下2015-04-04Nginx服務(wù)器中配置404錯(cuò)誤頁面時(shí)一些值得注意的地方
這篇文章主要介紹了Nginx服務(wù)器中配置404錯(cuò)誤頁面時(shí)一些值得注意的地方,包括隱藏Nginx出錯(cuò)頁面及Header上的版本號(hào)的安全方法,需要的朋友可以參考下2016-01-01在Nginx中增加對(duì)OAuth協(xié)議的支持的教程
這篇文章主要介紹了在Nginx中增加對(duì)OAuth協(xié)議的支持的教程,OAuth協(xié)議如今廣泛用于社交網(wǎng)絡(luò)的API中,需要的朋友可以參考下2015-06-06Windows下使用?Nginx?搭建?HTTP文件服務(wù)器?實(shí)現(xiàn)文件下載功能
Nginx?是一款輕量級(jí)的?HTTP?服務(wù)器,采用事件驅(qū)動(dòng)的異步非阻塞處理方式框架,這讓其具有極好的?IO?性能,時(shí)常用于服務(wù)端的反向代理和負(fù)載均衡,這篇文章主要介紹了Windows下使用?Nginx?搭建?HTTP文件服務(wù)器實(shí)現(xiàn)文件下載功能,需要的朋友可以參考下2023-03-03關(guān)于nginx沒有跳轉(zhuǎn)到upstream地址的解決
這篇文章主要介紹了關(guān)于nginx沒有跳轉(zhuǎn)到upstream地址的解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09