I.はじめに
この記事では、CentOS 7.6 環境で Nginx をダウンロード、インストール、設定、使用するためのチュートリアルを中心に紹介しますので、nginx を学習している友人は参考にしてください。
2. ダウンロード
次のコマンドを使用してダウンロードします
wget http://nginx.org/download/nginx-1.23.3.tar.gz
3. nginx に必要な環境ライブラリをインストールします
まず、gcc、gcc-c++、zlib、pcre、openssl をインストールする必要があります。
パッケージ名がインストールされているかどうかを確認します
rpm -q ?パッケージ名
3.1 gcc gcc-c++ をインストールする
yum install -y gcc gcc-c++
3.2 pcreをダウンロードしてインストールする
cd /usr/local/
wget http://downloads.sourceforge.net/project/pcre/pcre/8.45/pcre-8.45.tar.gz
tar -zxvf pcre-8.45.tar.gz
cd pcre-8.45
./configure
make && make install
3.3 openssl をダウンロードしてインストールする
cd /usr/local/
wget https://www.openssl.org/source/openssl-1.1.1t.tar.gz --no-check-certificate
tar -zxvf openssl-1.1.1t.tar.gz
cd openssl-1.1.1t
./config
make && make install
注: wget https://www.openssl.org/source/openssl-1.1.1t.tar.gz の後に –no-check-certificate を忘れずに追加してください。追加しないと、エラーが報告されます。www.openssl.org で発行された証明書の有効期限が切れており、検証できないことが示されています。
3.4 zlibのダウンロードとインストール
cd /usr/local/
wget http://zlib.net/zlib-1.2.13.tar.gz
tar -zxvf zlib-1.2.13.tar.gz
cd zlib-1.2.13
./configure
make && make install
4.nginxをインストールする
4.1 インストール構成
cd /usr/local/
wget http://nginx.org/download/nginx-1.23.3.tar.gz
tar -zxvf nginx-1.23.3.tar.gz -C /usr/local/
cd nginx-1.25.2
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/pcre-8.45 --with-openssl=/usr/local/openssh
make && make install
4.2 SSL ソフト リンクを作成します。そうしないと、nginx の起動時にエラーが報告されます。
ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
5. Nginxを起動する
5.1 Nginxを起動する
/usr/local/nginx/sbin/nginx
nginx をテストし、別のマシンからサーバーの IP にアクセスします。「nginx へようこそ!」ページが表示されれば成功です。ページにアクセスできないがサーバーに ping できる場合は、ファイアウォールがオンになっている可能性があります。オフにしてください。 。
5.2 ファイアウォールをオフにする
systemctl stop firewalld.service
5.3 ファイアウォールをオフにし、起動時に自動的に起動する
systemctl disable firewalld.service
5.4 nginxサービスの停止
/usr/local/nginx/sbin/nginx –s stop
5.5 nginxサービスを強制的に終了する
pkill nginx
5.6 起動時に自動的に起動するように nginx を設定する
/usr/lib/systemd/system パスの下に nginx サービス名を作成します。ここでは nginx.service に設定します。
cd /usr/lib/systemd/system
vim nginx.service
以下を設定します
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid #更换成自己安装nginx的路径
ExecStartPre=/usr/local/nginx/sbin/nginx -t #更换成自己安装nginx的路径
ExecStart=/usr/local/nginx/sbin/nginx #更换成自己安装nginx的路径
ExecReload=/usr/local/nginx/sbin/nginx -s reload #更换成自己安装nginx的路径
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
設定を保存するだけです。
起動時の自動起動を設定する
systemctl enable nginx.service
設定が成功したか確認する
systemctl list-unit-files | grep nginx
启动:systemctl start nginx.service
关闭:systemctl stop nginx.service
6. Nginxの構成を紹介する
6.1 nginx.conf 設定ファイルの概要
#nginx配置
#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; #最大连接数为 1024.
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
include mime.types;
default_type application/octet-stream;
sendfile on;
tcp_nopush on;
keepalive_timeout 65;
#gzip on; #http头压缩
#正向代理配置
server {
listen 8080; # 代理监听端口
resolver 114.114.114.114; #代理DNS配置
#charset koi8-r;
access_log /home/lich/logs/fproxy.access.log; #accesslog输出路径
error_log /home/lich/logs/fproxy.error.log; #errorlog输出路径
location / {
proxy_pass $scheme://$host$request_uri; # 配置正向代理参数
proxy_set_header Host $http_host; # 解决如果URL中带"."后Nginx 503错误
proxy_buffers 256 4k; # 配置缓存大小
proxy_max_temp_file_size 0; # 关闭磁盘缓存读写减少I/O
proxy_connect_timeout 30; # 代理连接超时时间
# 配置代理服务器HTTP状态缓存时间
proxy_cache_valid 200 302 10m;
proxy_cache_valid 301 1h;
proxy_cache_valid any 1m;
}
}
#反向代理配置
server {
listen 80;
server_name test.test.com; #代理转发域名配置
access_log /home/lich/logs/rproxy.access.log;
error_log /home/lich/logs/rproxy.error.log;
location / {
proxy_pass http://172.16.113.1:8001; #代理到后段实际应用服务器地址
index index.html index.htm index.jsp;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
6.2 構成の使用状況の監視
listen *:80 | *:8080 #监听所有80端口和8080端口
listen IP_address:port #监听指定的地址和端口号
listen IP_address #监听指定ip地址所有端口
listen port #监听该端口的所有IP连接
6.3 server_name: 名前ベースの仮想ホスト構成
構文形式は次のとおりです。
server_name name ...;
名前には、名前を 1 つだけ指定することも、スペースで区切って複数の名前を指定することもできます。各名前は 2 つまたは 3 つの段落で構成され、各段落の間は「.」で区切られます。
server_name test.com www.test.com
ワイルドカード文字「*」も使用できますが、ワイルドカード文字は 3 文字で構成される最初または最後の段落、または 2 文字で構成される最後の段落でのみ使用できます。
server_name *.test.com www.test.*
正規表現文字列の開始タグとして「~」を使用して、正規表現を使用することもできます。
server_name ~^www\d+\.test\.com$;
6.4 server_name: IP アドレスに基づく仮想ホスト構成
#構文構造はドメイン名に基づくマッチングと同じであり、ワイルドカードや正規表現を考慮する必要はありません。
server_name 192.168.1.1
6.5 プロキシパス
このコマンドは、プロキシ サーバーのアドレスを設定するために使用されます。ホスト名、IP アドレス、ポート番号の形式で指定できます。
# proxy_pass URL;
# URL 为被代理服务器的地址,可以包含传输协议、主机名称或IP地址加端口号,URI等。
proxy_pass http://www.test.com/uri;
6.6 インデックス
このディレクティブは、Web サイトのデフォルトのホームページを設定するために使用されます。
#index filename ...;
#后面的文件名称可以有多个,中间用空格隔开。
index index.html index.jsp;
7. ngxin ロードバランシング
7.1 ポーリングアルゴリズムの負荷分散
upstream OrdinaryPolling {
server 172.16.113.1:8081;
server 172.16.113.1:8082;
}
server {
listen 80;
server_name test.test.com;
access_log /home/lich/logs/rproxy_slb.access.log;
error_log /home/lich/logs/rproxy_slb.error.log;
location / {
proxy_pass http://OrdinaryPolling;
index index.html index.htm index.jsp;
# deny ip
# allow ip
}
}
7.2 比例的に重み付けされたポーリング負荷分散
upstream OrdinaryPolling {
server 172.16.113.1:8081 weight=2;
server 172.16.113.1:8082 weight=5;
}
server {
listen 80;
server_name test.test.com;
access_log /home/lich/logs/rproxy_slb.access.log;
error_log /home/lich/logs/rproxy_slb.error.log;
location / {
proxy_pass http://OrdinaryPolling;
# index index.html index.htm index.jsp;
# deny ip
# allow ip
}
}
7.3 IPルーティングに基づく負荷分散
ip_hash ディレクティブを上流ディレクティブ ブロックに追加しました。この命令は、同じ IP アドレスを持つクライアントによって送信されたリクエストが同じ Tomcat サーバーに分散されて処理されることを nginx サーバーに指示します。
upstream OrdinaryPolling {
server 172.16.113.1:8081 weight=2;
server 172.16.113.1:8082 weight=5;
ip_hash;
}
server {
listen 80;
server_name test.test.com;
access_log /home/lich/logs/rproxy_slb.access.log;
error_log /home/lich/logs/rproxy_slb.error.log;
location / {
proxy_pass http://OrdinaryPolling;
# index index.html index.htm index.jsp;
# deny ip
# allow ip
}
}
7.4 サーバーの応答時間に基づく負荷分散
負荷はサーバーがリクエストを処理するのにかかる時間に応じて実行され、リクエストの処理が速いほど、つまり応答時間が短いほど優先度が割り当てられます。
upstream OrdinaryPolling {
server 172.16.113.1:8081 weight=2;
server 172.16.113.1:8082 weight=5;
fair;
}
server {
listen 80;
server_name test.test.com;
access_log /home/lich/logs/rproxy_slb.access.log;
error_log /home/lich/logs/rproxy_slb.error.log;
location / {
proxy_pass http://OrdinaryPolling;
# index index.html index.htm index.jsp;
# deny ip
# allow ip
}
}