CentOS 7.6 環境での Nginx1.23.3 のダウンロード、インストール、設定、および使用に関するチュートリアル

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
         
        }
}

おすすめ

転載: blog.csdn.net/lcy1619260/article/details/132619641