Beispiel für die Konfiguration eines Nginx-Reverse-Proxy-Websockets

不言
Freigeben: 2023-03-25 16:56:01
Original
2826 Leute haben es durchsucht

In diesem Artikel wird hauptsächlich das Nginx-Reverse-Proxy-Websocket-Konfigurationsbeispiel vorgestellt. Freunde, die es benötigen, können darauf zurückgreifen.

In letzter Zeit besteht eine Nachfrage Ist die Verwendung des Nginx-Reverse-Proxy-Websockets erforderlich, wurde er nach der Suche nach einigen Informationen getestet und bestanden. Dieser Artikel erstellt nur einen Datensatz

Kopieren Sie den Code Der Code lautet wie folgt:

注: 看官方文档说 Nginx 在 1.3 以后的版本才支持 websocket 反向代理,所以要想使用支持 websocket 的功能,必须升级到 1.3 以后的版本,
因此我这边是下载的 Tengine 的最新版本测试的
Nach dem Login kopieren

1. Laden Sie tengine den neuesten Quellcode herunter

Code kopieren Der Code lautet wie folgt:

wget http://tengine.taobao.org/download/tengine-2.0.3.tar.gz
Nach dem Login kopieren

2. Grundlegende Abhängigkeiten installierenPaket

Kopieren Sie den Code Der Code lautet wie folgt:

yum -y install pcre*
yum -y install zlib*
yum -y install openssl*
Nach dem Login kopieren

3. kompilieren und installieren

Kopieren Sie den Code Der Code lautet wie folgt:

tar -zxvf tengine-2.0.3.tar.gz cd tengine-2.0.3 ./configure --prefix=安装目录 make sudo make install
Nach dem Login kopieren

nginx.conf-Konfiguration lautet wie folgt:

Code kopieren Der Code lautet wie folgt:

user apps apps;
worker_processes  4; # 这个由于我是用的虚拟机,所以配置的 4 ,另外 tengine 可以自动根据CPU数目设置进程个数和绑定CPU亲缘性
# worker_processes auto
# worker_cpu_affinity auto
error_log  logs/error.log;
pid        logs/nginx.pid;
#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 65535;
events {
    use epoll;
    worker_connections  65535;
}
# load modules compiled as Dynamic Shared Object (DSO)
#
#dso {
#    load ngx_http_fastcgi_module.so;
#    load ngx_http_rewrite_module.so;
#}
http {
    include       mime.types;
    default_type  application/octet-stream;
    server_names_hash_bucket_size 128;
    client_header_buffer_size 4k;
    large_client_header_buffers 4 32k;
    client_max_body_size 80m;
    sendfile on;
    tcp_nopush     on;
    client_body_timeout  5;
    client_header_timeout 5;
    keepalive_timeout  5;
    send_timeout       5;
    open_file_cache max=65535 inactive=20s;
    open_file_cache_valid 30s;
    open_file_cache_min_uses 1;
    tcp_nodelay on;
    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    fastcgi_buffer_size 64k;
    fastcgi_buffers 4 64k;
    fastcgi_busy_buffers_size 128k;
    fastcgi_temp_file_write_size 128k;
    client_body_buffer_size  512k;
    proxy_connect_timeout    5;
    proxy_read_timeout       60;
    proxy_send_timeout       5;
    proxy_buffer_size        16k;
    proxy_buffers            4 64k;
    proxy_busy_buffers_size 128k;
    proxy_temp_file_write_size 128k;
    gzip on;
    gzip_min_length  1k;
    gzip_buffers     4 16k;
    gzip_http_version 1.0;
    gzip_comp_level 2;
    gzip_types       text/plain application/x-javascript text/css application/xml;
    gzip_vary on;
    proxy_temp_path   /dev/shm/temp;
    proxy_cache_path  /dev/shm/cache levels=2:2:2   keys_zone=cache_go:200m inactive=5d max_size=7g;
    log_format log_access  '$remote_addr - $remote_user [$time_local] "$request" "$request_time" "$upstream_response_time"'
              '$status $body_bytes_sent "$http_referer" '
              '"$http_user_agent" $http_x_forwarded_for $host $hostname' ;
    #websocket 需要加下这个
    map $http_upgrade $connection_upgrade {
        default upgrade;
        ''      close;
    }
    include /home/apps/tengine/conf/test.com;
}
Nach dem Login kopieren

Inhalt der Test.com-Konfigurationsdatei:

Code kopieren Der Code lautet wie folgt:

upstream test.com {
   server 192.168.1.5:9000;
}
server {
    listen       80;
    server_name  test.com;
    #charset koi8-r;
    #access_log  logs/host.access.log  main;
    location  ^~  /websocket {
        proxy_pass http://test.com;
        proxy_redirect    off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}
Nach dem Login kopieren

Parse-Map-Befehl

nginx oben Informationen zur Funktion von map $http_upgrade $connection_upgrade in der .conf-Konfiguration finden Sie unter http://www.ttlsa.com/nginx/using-nginx-map-method/

Diese Funktion basiert hauptsächlich auf dem $ in der Client-Anfrage. Der Wert von http_upgrade wird zum Erstellen und Ändern des Werts verwendet von $connection_upgrade, das heißt, eine neue Variable $connection_upgrade wird basierend auf dem Wert der Variablen $http_upgrade erstellt. Die erstellten Regeln sind der Inhalt von {}, siehe Konfiguration:

Code kopieren Der Code lautet wie folgt:

map $http_upgrade $connection_upgrade {
        default upgrade;
        ''      close;
    }
Nach dem Login kopieren

Die Regeln stimmen nicht überein, daher wird die Standardeinstellung verwendet, d. h. der Wert von $connection_upgrade ist immer upgrade. Wenn $http_upgrade dann eine leere Zeichenfolge ist, liegt der Wert nahe beieinander. Persönliches Verständnis!

Verwandte Empfehlungen:

Nginx und PHP Installation und Konfiguration Six Nginx Reverse Proxy und Load Balancing Deployment Guide

nginx reverse Der Proxy-Mechanismus löst domänenübergreifende Frontend-Probleme

Das obige ist der detaillierte Inhalt vonBeispiel für die Konfiguration eines Nginx-Reverse-Proxy-Websockets. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!