nginx對nodejs服務器的http、https、ws、wss的配置

最新nginx對nodejs服務器的http、https、ws、wss的配置

目錄

 

 

軟件版本

  1. Linux 的centos7系統
  2. nodejs:v8.11.1
  3. nginx: v1.12.1
  4. 服務器:(其實跟配置nginx沒有什麼關係) 
    短連接:使用express 
    長鏈接:使用websocket

話很少說上乾貨

靜態資源配置

文件名*.conf
server{
    listen 80; listen 443 ssl; server_name xxx.xxxx.xxx; # 域名或者localhost或者ip client_max_body_size 200M; ssl_certificate /**.pem; ssl_certificate_key /**.key; location ~ ^/(css/|fonts/|images/|js/){ # 訪問靜態資源 root /**/public;#靜態文件路徑(http://xxx.xxxx.xxx/css==訪問/**/public/css下的文件) access_log off; expires max; } location ~ .*\.(gif|jpg|jpeg|png)$ # 緩存 { expires 30d; } location / { # 訪問靜態網頁 root /root/project/**; # 靜態網頁的路徑 index index.php index.html index.html; } }

 

注: 
server_name:域名or localhost or IPphp

  • 域名:用戶能夠直接在瀏覽器地址訪問http://域名/(默認80端口)or https://域名/(默認443)
  • localhost and IP:用戶能夠直接在瀏覽器地址訪問http://公網IP/(默認80端口)or https://公網IP/(默認443)

listen 443 ssl:設置https訪問模式css

ssl_certificate /*.pem :https的安全證書的pem文件html

ssl_certificate_key /*.key :https的安全證書的key文件(由於我用的是阿里雲服務器,因此這兩個文件是從阿里雲管理平臺申請的證書,申請時間挺快的)java

反向代理配置

由於我主要用於一個小型的nodejs服務器,因此登陸用短連接,遊戲中用長鏈接實現
文件名*.conf

    upstream ws{#長鏈接服務器 負載均衡 server 127.0.0.1:6080;#遊戲服務器1 server 127.0.0.1:6081;#遊戲服務器2 server 127.0.0.1:6082;#遊戲服務器3 server 127.0.0.1:6083;#遊戲服務器4 server 127.0.0.1:6084; ... keepalive 3000; } server{//短鏈接 listen 0.0.0.0:80; listen 443 ssl; server_name xx.xxxxx.xxx; # 同上 ssl_certificate /etc/nginx/conf.d/*.pem; ssl_certificate_key /etc/nginx/conf.d/*.key; location ~ ^/(css/|fonts/|images/|js/){ root /root/project/***/public; access_log off; expires 10d; } location ~ .*\.(gif|jpg|jpeg|png)$ { expires 30d; } location /{ proxy_pass_request_headers on; 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_set_header X-Nginx-Proxy true; proxy_redirect off; client_max_body_size 10m;#傳輸數據的大小 proxy_pass http://127.0.0.1:6000; } server{#長鏈接 listen 80; listen 443 ssl; server_name xx.xxxx.xxx; ssl_certificate /etc/nginx/conf.d/*.pem; ssl_certificate_key /etc/nginx/conf.d/*.key; location ~ ^/(css/|fonts/|images/|js/){ root /root/project/***/public; access_log off; expires 10d; } location / { 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_set_header X-Nginx-Proxy true; proxy_redirect off; client_max_body_size 10m; proxy_pass http://ws; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_connect_timeout 300s; #配置點1 proxy_read_timeout 300s; #配置點2,若是沒效,能夠考慮這個時間配置長一點 proxy_send_timeout 300s; #配置點3 } }

 

注: 
upstream ws :配置負載均衡,nginx會隨負載均衡算法隨機的把長鏈接請求轉接到此區域中的某一個鏈接。(我這裏主要是用於:擴充用戶的長鏈接鏈接數。)node

proxy_pass:代理請求路徑。本身服務器端的路徑。nginx

proxy_pass http://ws:長鏈接負載均衡的配置git

proxy_connect_timeout 300s or proxy_read_timeout 300s or proxy_send_timeout 300s:主要是配置nginx對長鏈接的保持時間,若是此長鏈接一段時間不請求任何命令後,nginx會在此時間後斷開此連接。通常會在客戶端設置一個心跳,在小於此時間後發起一次請求,用以保持此長鏈接的鏈接(這個是個人解決辦法,不知道是否有更好的方法,歡迎提出來,學習一下)github

大體到這裏,你就能夠遠程訪問你的服務器了。

nodejs簡單的遊戲服務器請點擊 github項目地址 
nodejs實現第三方登陸請點擊 nodejs服務端實現微信小遊戲登陸web

相關文章
相關標籤/搜索