プライベートな連絡先の最初の情報
送料メール:
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Nginx 公式ウェブサイト: http://nginx.org
Nginx は、無料のオープンソースの高性能 HTTP およびリバース プロキシ サーバー、電子メール プロキシ サーバー、および TCP/UDP プロキシ サーバーです。
nginx のその他のセカンダリ リリース:
テンエンジン
Taobao によって開始された Web サーバー プロジェクト。 Nginx をベースとして、トラフィックの多い Web サイトのニーズを満たすために多くの高度な機能が追加されています。 Tengine のパフォーマンスと安定性は、淘宝網、天猫モールなどの大規模な Web サイトで十分にテストされています。その最終的な目標は、効率的で安定した、安全で使いやすい Web プラットフォームを作成することです。2011 年 12 月から Tengine はオープンソース プロジェクトになりました
公式ウェブサイト:http://tengine.taobao.org/
オープンレスティ
Nginx と Lua 言語をベースとした高性能 Web プラットフォーム
公式サイト:http://openresty.org/cn/
Nginxの機能紹介
静的 Web リソース サーバー html、画像、js、css、txt およびその他の静的リソース
http/https プロトコルのリバース プロキシ
FastCGI/uWSGI/SCGI およびその他のプロトコルと組み合わせて、リバース プロキシの動的リソース リクエストを実行します
tcp/udpプロトコルのリクエスト転送(リバースプロキシ)
imap4/pop3 プロトコルのリバース プロキシ
基本的な機能
モジュラー設計、優れた拡張性
高信頼性
ホット デプロイメントのサポート: ダウンタイムなしで構成ファイルを更新し、バージョンをアップグレードし、ログ ファイルを置き換えます。
低メモリ消費量: キープアライブ接続モードでの 10,000 の非アクティブな接続に必要なメモリは 2.5M のみです
イベント駆動、AIO、MMAP、sendfile
Webサービス関連機能
仮想ホスト(サーバー)
キープアライブ接続とパイプライン接続をサポート (1 つの接続を使用して複数のリクエストを行う)
アクセスログ (パフォーマンスを向上させるためにログバッファリングをサポート)
URL書き換え
パスエイリアス
IPおよびユーザーベースのアクセス制御
レート制限と同時実行制限をサポート
顧客のワークフローを中断することなく再構成とオンラインアップグレードが可能
Nginxのプロセス構造
Nginx はマルチプロセス組織モデルであり、マスター プロセスとワーカー プロセスで構成されます。
マスタープロセスの機能:
对外接口:接收外部的操作(信号)
对内转发:根据外部的操作的不同,通过信号管理 Worker
监控:监控 worker 进程的运行状态,worker 进程异常终止后,自动重启 worker 进程
读取Nginx 配置文件并验证其有效性和正确性
建立、绑定和关闭socket连接
按照配置生成、管理和结束工作进程
接受外界指令,比如重启、升级及退出服务器等指令
不中断服务,实现平滑升级,重启服务并应用新的配置
开启日志文件,获取文件描述符
不中断服务,实现平滑升级,升级失败进行回滚处理
编译和处理perl脚本
ワーカープロセスの機能:
所有 Worker 进程都是平等的
实际处理:网络请求,由 Worker 进程处理
Worker进程数量:一般设置为核心数,充分利用CPU资源,同时避免进程数量过多,导致进程竞争CPU资源,
增加上下文切换的损耗
接受处理客户的请求
将请求依次送入各个功能模块进行处理
I/O调用,获取响应数据
与后端服务器通信,接收后端服务器的处理结果
缓存数据,访问缓存索引,查询和调用缓存数据
发送请求结果,响应客户的请求
接收主程序指令,比如重启、升级和退出等
Nginxモジュールの紹介
コア モジュール: Nginx サーバーの通常の動作に不可欠なモジュールであり、エラー ログ、構成ファイルの解析、イベント駆動メカニズム、プロセス管理などのコア機能を提供します。
標準 HTTP モジュール: ポート構成、Web ページのエンコード設定、HTTP 応答ヘッダー設定など、HTTP プロトコル解析に関連する機能を提供します。
オプションの HTTP モジュール: 主に標準の HTTP 機能を拡張して、Nginx が次のような特別なサービス (Flash マルチメディア送信、GeoIP リクエストの解析、ネットワーク送信圧縮、セキュリティ プロトコル SSL サポートなど) を処理できるようにするために使用されます。
メール サービス モジュール: 主に、POP3 プロトコル、IMAP プロトコル、SMTP プロトコルのサポートを含む、Nginx メール サービスをサポートするために使用されます。
ストリーム サービス モジュール: TCP プロトコル プロキシを含むリバース プロキシ機能を実装します。
サードパーティ モジュール: Nginx サーバー アプリケーションを拡張し、Json サポート、Lua サポートなどの開発者定義の機能を完成させます。
Nginxのバージョン
メインライン バージョンはメインの開発バージョンで、通常は 1.19 などの奇数のバージョン番号です。
安定バージョンは最新の安定バージョンで、通常は次のような偶数番号のバージョンです: 1.20
レガシー バージョン 古い安定したバージョン、通常は偶数番号のバージョン(1.18 など)
Nginx は yum またはソース コードを使用してインストールできますが、ソース コードを使用してコンパイルしてインストールすることをお勧めします。
yum のバージョンが古い
コンパイルしてインストールすると、関連するパスのカスタマイズが容易になります。ソース コードのコンパイルを使用すると、関連する機能をカスタマイズできるため、ビジネスでの使用がより便利になります。
Dockerコンテナが直接実行される
[root@Rocky8 ~]#vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[root@Rocky8 ~]#yum -y install nginx
[root@Rocky8 ~]#rpm -q nginx
nginx-1.26.1-2.el8.ngx.x86_64
Nginx は C 言語で記述されているため、Nginx のソース コードをインストールするには、事前に標準のコンパイラを用意する必要があります。GCC の正式名称は、GNU によって開発され、GPL または LGPL によってライセンス供与されています。 -like、Apple コンピュータの標準コンパイラ Mac OS 他の言語の場合、Makefile の自動作成を完了するには Automake ツールも必要です。Nginx の一部のモジュールは次のようなサードパーティ ライブラリに依存する必要があります。 )、zlib (gzip モジュールをサポート)、openssl (ssl モジュールをサポート) など。
公式ソースコードパッケージのダウンロードアドレス: https://nginx.org/en/download.html
# 安装依赖包
[root@Ubuntu2204 ~]#apt update
[root@Ubuntu2204 ~]#apt -y install gcc make libpcre3 libpcre3-dev openssl libssl-dev zlib1g-dev
[root@Ubuntu2204 ~]#useradd -r -s /sbin/nologin nginx
[root@Ubuntu2204 ~]#cd /usr/local/src/
[root@Ubuntu2204 src]#wget https://nginx.org/download/nginx-1.22.1.tar.gz
[root@Ubuntu2204 src]#tar xf nginx-1.22.1.tar.gz
[root@Ubuntu2204 src]#cd nginx-1.22.1/
[root@Ubuntu2204 nginx-1.22.1]#./configure --prefix=/apps/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module
[root@Ubuntu2204 nginx-1.22.1]#make && make install
[root@Ubuntu2204 nginx-1.22.1]#chown -R nginx.nginx /apps/nginx
[root@Ubuntu2204 nginx-1.22.1]#ln -s /apps/nginx/sbin/nginx /usr/sbin/
# 启动nginx
[root@Ubuntu2204 nginx-1.22.1]#cd
[root@Ubuntu2204 ~]#nginx
[root@Ubuntu2204 ~]#ss -nlt
# 关闭nginx
[root@Ubuntu2204 ~]#nginx -s stop
[root@Ubuntu2204 ~]#ss -nlt
# 创建 Nginx 自启动文件
复制同一版本的nginx的yum安装生成的service文件
[root@Ubuntu2204 ~]#vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx - high performance web server
Documentation=https://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/apps/nginx/run/nginx.pid
ExecStart=/apps/nginx/sbin/nginx -c /apps/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
LimitNOFILE=100000
[Install]
WantedBy=multi-user.target
# 创建pid文件存放的目录
[root@Ubuntu2204 ~]#mkdir /apps/nginx/run/
# 修改配置文件
[root@Ubuntu2204 ~]#vim /apps/nginx/conf/nginx.conf
pid /apps/nginx/run/nginx.pid;
# 验证 Nginx 自启动文件
[root@Ubuntu2204 ~]#systemctl daemon-reload
[root@Ubuntu2204 ~]#systemctl enable --now nginx.service
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /lib/systemd/system/nginx.service.
[root@Ubuntu2204 ~]#ll /apps/nginx/run/
-rw-r--r-- 1 root root 6 Jul 11 09:45 nginx.pid
[root@Ubuntu2204 ~]#ss -nlt
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 511 0.0.0.0:80 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
[root@Ubuntu2204 ~]#systemctl stop nginx.service
[root@Ubuntu2204 ~]#systemctl status nginx.service
[root@Ubuntu2204 ~]#ss -nlt
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
# 验证 Nginx 自启动
[root@Ubuntu2204 ~]#reboot
[root@Ubuntu2204 ~]#ss -nlt
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 511 0.0.0.0:80 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:*
[root@Ubuntu2204 ~]#systemctl status nginx.service
● nginx.service - nginx - high performance web server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2024-07-11 09:48:58 CST; 1min 5s ago
Docs: https://nginx.org/en/docs/