Rumah Operasi dan penyelenggaraan Nginx nginx如何端口复用

nginx如何端口复用

Jun 11, 2019 am 09:24 AM
nginx

nginx-1.15.2 版本新增了$ssl_preread_protocol 变量,通过该变量可以使用 stream 反向代理时预先判断连接是否为SSL/TLS协议或者为非SSL/TLS协议,从而实现同一个端口来转发不同的业务。

nginx如何端口复用

stream_ssl_preread模块检查初始ClientHello在SSL或TLS连接消息,并且提取其可用于管理连接几个值。$ssl_preread_protocol版本1.15.2中添加的变量从消息client_version字段中捕获最新的SSL / TLS版本号ClientHello。如果消息中supported_versions存在扩展名ClientHello,则变量设置为TLSv1.2/TLSv1.3。

实例:在一台反向代理服务器上运行Nginx,并监听443端口,后端有两组服务,一个为HTTPS(开启TLS1.2/1.3)网站服务,另一个为SSH 服务,我们要实现这两组服务运行在同一个端口上(配置的443端口)--入口请求由Nginx自动区分。

为简便,我这时直接使用 docker环境

nginx 版本

# docker exec -it nginx nginx -V
nginx version: nginx/1.15.10
built by gcc 8.2.0 (Alpine 8.2.0)
built with OpenSSL 1.1.1b  26 Feb 2019
...<省略若干行>...

目录文件

 # tree ./nginx-with-L4-reuse/./nginx-with-L4-reuse/
├── config│   └── nginx
│       ├── conf.d
│       │   └── default.conf
│       ├── fastcgi.conf
│       ├── fastcgi_params
│       ├── mime.types
│       └── nginx.conf
└── docker-compose.yaml

3 directories, 6 files

docker-compose.yaml

# docker-compose.yaml
version: "2.4"
services:
  nginx:
    container_name: nginx
    image: nginx:alpine
    network_mode: host
    volumes:
      - ./config/nginx:/etc/nginx/:ro
    ports:
      - "443:443"
    restart: always

nginx.conf

user  nginx;
worker_processes  2;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}

stream {
    log_format stream '{"@access_time":"$time_iso8601",'
        '"clientip":"$remote_addr",'
        '"pid":$pid,'
        '"pro":"$protocol",'
        '"ssl_pro": "$ssl_preread_protocol"',
        '"pro":"$protocol",'
        '"stus":$status,'
        '"sent":$bytes_sent,'
        '"recv":$bytes_received,'
        '"sess_time":$session_time,'
        '"up_addr":"$upstream_addr",'
        '"up_sent":$upstream_bytes_sent,'
        '"up_recv":$upstream_bytes_received,'
        '"up_conn_time":$upstream_connect_time,'
        '"up_resp_time":"$upstream_first_byte_time",'
        '"up_sess_time":$upstream_session_time}';

    upstream ssh {
        server 192.168.50.212:22;
    }

    upstream web {
        server 192.168.50.215:443;
    }

    map $ssl_preread_protocol $upstream {
        default ssh;
        "TLSv1.2" web;
        "TLSv1.3" web;
    }

    # SSH and SSL on the same port
    server {
        listen 443;

        proxy_pass $upstream;
        ssl_preread on;
        access_log /var/log/nginx/stream_443.log stream;
    }
}

$ssl_preread_protocol 实现IP层实现了不同业务配置,在某种需求上很有意义--虽然存在功能限制。然而Tengine-2.3.0已经实现的IP层基于域名转发,或许这一特性会引入到Nginx。

更多Nginx相关技术文章,请访问Nginx使用教程栏目进行学习! 

Atas ialah kandungan terperinci nginx如何端口复用. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial PHP
1596
276
Bagaimana cara melaksanakan kod PHP selepas menulis kod PHP? Beberapa cara biasa untuk melaksanakan kod php Bagaimana cara melaksanakan kod PHP selepas menulis kod PHP? Beberapa cara biasa untuk melaksanakan kod php May 23, 2025 pm 08:33 PM

Kod PHP boleh dilaksanakan dengan banyak cara: 1. Gunakan baris arahan untuk terus memasukkan "nama fail php" untuk melaksanakan skrip; 2. Masukkan fail ke dalam direktori root dokumen dan mengaksesnya melalui penyemak imbas melalui pelayan web; 3. Jalankannya dalam IDE dan gunakan alat debugging terbina dalam; 4. Gunakan kotak pasir PHP dalam talian atau platform pelaksanaan kod untuk ujian.

Setelah memasang nginx, laluan fail konfigurasi dan tetapan awal Setelah memasang nginx, laluan fail konfigurasi dan tetapan awal May 16, 2025 pm 10:54 PM

Memahami laluan fail konfigurasi Nginx dan tetapan awal sangat penting kerana ia adalah langkah pertama dalam mengoptimumkan dan menguruskan pelayan web. 1) Laluan fail konfigurasi biasanya /etc/nginx/nginx.conf. Sintaks boleh didapati dan diuji menggunakan arahan NGINX-T. 2) Tetapan awal termasuk tetapan global (seperti pengguna, worker_processes) dan tetapan HTTP (seperti termasuk, log_format). Tetapan ini membolehkan penyesuaian dan lanjutan mengikut keperluan. Konfigurasi yang salah boleh membawa kepada isu prestasi dan kelemahan keselamatan.

Bagaimana untuk mengehadkan sumber pengguna di Linux? Bagaimana cara mengkonfigurasi ULIMIT? Bagaimana untuk mengehadkan sumber pengguna di Linux? Bagaimana cara mengkonfigurasi ULIMIT? May 29, 2025 pm 11:09 PM

Sistem Linux mengehadkan sumber pengguna melalui perintah ULIMIT untuk mengelakkan penggunaan sumber yang berlebihan. 1.Ulimit adalah arahan shell terbina dalam yang boleh mengehadkan bilangan deskriptor fail (-N), saiz memori (-V), kiraan thread (-u), dan lain-lain, yang dibahagikan kepada had lembut (nilai berkesan semasa) dan had keras (had atas maksimum). 2. Gunakan perintah ULIMIT secara langsung untuk pengubahsuaian sementara, seperti ULIMIT-N2048, tetapi hanya sah untuk sesi semasa. 3. Untuk kesan tetap, anda perlu mengubah suai /etc/security/limits.conf dan fail konfigurasi PAM, dan tambah sessionrequiredpam_limits.so. 4. Perkhidmatan SystemD perlu menetapkan LIM dalam fail unit

Langkah-langkah khusus untuk mengkonfigurasi Sendiri Perkhidmatan Nginx Langkah-langkah khusus untuk mengkonfigurasi Sendiri Perkhidmatan Nginx May 16, 2025 pm 10:39 PM

Langkah -langkah untuk memulakan konfigurasi nginx adalah seperti berikut: 1. Buat fail perkhidmatan Systemd: Sudonano/etc/SystemD/System/nginx.service, dan tambah konfigurasi yang relevan. 2. Muat semula konfigurasi Systemd: SudosystemCtldaemon-Reload. 3. Dayakan Nginx untuk boot secara automatik: sudosystemctlenablenginx. Melalui langkah -langkah ini, NGINX akan dijalankan secara automatik apabila sistem dimulakan, memastikan kebolehpercayaan dan pengalaman pengguna laman web atau aplikasi.

Apakah kemahiran konfigurasi Debian Nginx? Apakah kemahiran konfigurasi Debian Nginx? May 29, 2025 pm 11:06 PM

Apabila mengkonfigurasi Nginx pada sistem Debian, berikut adalah beberapa petua praktikal: struktur asas fail konfigurasi Global Fail: Tentukan parameter tingkah laku yang mempengaruhi keseluruhan perkhidmatan Nginx, seperti bilangan thread pekerja dan kebenaran pengguna yang sedang berjalan. Bahagian Pengendalian Acara: Memutuskan bagaimana Nginx berurusan dengan sambungan rangkaian adalah konfigurasi utama untuk meningkatkan prestasi. Bahagian Perkhidmatan HTTP: Mengandungi sejumlah besar tetapan yang berkaitan dengan perkhidmatan HTTP, dan boleh membenamkan beberapa pelayan dan blok lokasi. Pilihan Konfigurasi Teras Worker_Connections: Tentukan bilangan maksimum sambungan yang setiap thread pekerja boleh mengendalikan, biasanya ditetapkan ke 1024. Multi_accept: Aktifkan mod penerimaan pelbagai sambungan dan tingkatkan keupayaan pemprosesan serentak. s

Konfigurasikan PHPStorm dan persekitaran pembangunan kontena Docker Konfigurasikan PHPStorm dan persekitaran pembangunan kontena Docker May 20, 2025 pm 07:54 PM

Melalui teknologi kontena Docker, pemaju PHP boleh menggunakan PHPStorm untuk meningkatkan kecekapan pembangunan dan konsistensi alam sekitar. Langkah -langkah khusus termasuk: 1. Buat Dockerfile untuk menentukan persekitaran PHP; 2. Konfigurasikan sambungan Docker dalam phpStorm; 3. Buat fail DockerCompose untuk menentukan perkhidmatan; 4. Konfigurasikan penterjemah PHP jauh. Kelebihannya adalah konsistensi alam sekitar yang kuat, dan kelemahannya termasuk masa permulaan yang panjang dan debugging kompleks.

Apakah teknik pengoptimuman SEO untuk debian apache2? Apakah teknik pengoptimuman SEO untuk debian apache2? May 28, 2025 pm 05:03 PM

Kemahiran pengoptimuman SEO Debianapache2 meliputi pelbagai peringkat. Berikut adalah beberapa kaedah utama: Penyelidikan Kata Kunci: Gunakan alat (seperti Alat Magic Kata Kunci) untuk melombong kata kunci teras dan tambahan halaman. Penciptaan Kandungan Berkualiti Tinggi: Menghasilkan kandungan yang berharga dan asli, dan kandungan perlu dijalankan penyelidikan mendalam untuk memastikan bahasa yang lancar dan format yang jelas. Susun atur kandungan dan Pengoptimuman Struktur: Gunakan tajuk dan sari kata untuk membimbing bacaan. Tulis perenggan dan ayat yang ringkas dan jelas. Gunakan senarai untuk memaparkan maklumat utama. Menggabungkan multimedia seperti gambar dan video untuk meningkatkan ekspresi. Reka bentuk kosong meningkatkan bacaan teks. Tahap Teknikal Penambahbaikan SEO: Robots.txt Fail: Menentukan hak akses crawler enjin carian. Mempercepatkan Laman Web Memuat: Dioptimumkan dengan bantuan mekanisme caching dan konfigurasi Apache

Cara melaksanakan penggunaan automatik Docker di Debian Cara melaksanakan penggunaan automatik Docker di Debian May 28, 2025 pm 04:33 PM

Melaksanakan penggunaan automatik Docker pada sistem Debian boleh dilakukan dengan pelbagai cara. Here are the detailed steps guide: 1. Install Docker First, make sure your Debian system remains up to date: sudoaptupdatesudoaptupgrade-y Next, install the necessary software packages to support APT access to the repository via HTTPS: sudoaptinstallapt-transport-httpsca-certificatecurlsoftware-properties-common-y Import the official GPG key of Docker: curl-

See all articles