以下は小さな例です:
centos7 システム ライブラリにはデフォルトで nginx rpm パッケージが含まれていないため、最初に rpm 依存関係ライブラリを更新する必要があります
1) yum を使用して nginx をインストールし、nginx ライブラリを含める必要があります。nginx ライブラリをインストールします
[root@localhost ~]# rpm -uvh http://nginx.org/packages/centos/7/noarch/rpms/nginx-release-centos-7-0.el7.ngx.noarch.rpm
2) 次のコマンドを使用して nginx
[root@localhost ~]# yum install nginx# をインストールします##3) nginx 設定
[root@localhost ~]# cd /etc/nginx/conf.d/ [root@localhost conf.d]# cat test.conf server { listen 80; server_name localhost; location / { root /var/www/html; index index.html; } } [root@localhost conf.d]# cat /var/www/html/index.html this is page of test!!!!4) nginx を開始します
[root@localhost ~]# service nginx start //或者使用 systemctl start nginx.service5) テスト アクセス (103.110.186.23 は 192.168.1.23 マシンの外部ネットワーク IP です)
[root@localhost conf.d]# curl http://192.168.1.23 this is page of test!!!!
次の状況を見てください: アクセス テストには http://192.168.1.23/proxy/index.html を使用してください
テストを容易にするために、最初に別のコンピューターでテストしますマシン 192.168.1.5 にポート 8090 で nginx をデプロイします。構成は次のとおりです:[root@bastion-idc ~]# cat /usr/local/nginx/conf/vhosts/haha.conf server { listen 8090; server_name localhost; location / { root /var/www/html; index index.html; } } [root@bastion-idc ~]# cat /var/www/html/index.html this is 192.168.1.5 [root@bastion-idc ~]# /usr/local/nginx/sbin/nginx -s reloadテスト アクセス (103.110.186.5 は 192.168.1.5 の外部ネットワーク IP):
[root@bastion-idc ~]# curl http://192.168.1.5:8090 this is 192.168.1.5
192.168.1.23 は nginx リバース プロキシ マシンとして機能し、nginx の構成は次のとおりです。
[root@localhost conf.d]# cat test.conf server { listen 80; server_name localhost; location / { root /var/www/html; index index.html; } location /proxy/ { proxy_pass http://192.168.1.5:8090/; } }このように、http://192.168.1.23/proxy/ へのアクセスは http://192.168.1.5:8090/ にプロキシされます。 p に一致するプロキシ ディレクトリは、ルート ディレクトリ /var/www/html
2)の結果と逆になります。 2 番目のケースでは、proxy_pass 設定の URL の後に "/"
[root@localhost conf.d]# curl http://192.168.1.23/proxy/ this is 192.168.1.5 [root@localhost conf.d]# curl http://192.168.1.23/proxy <html> <head><title>301 moved permanently</title></head> <body bgcolor="white"> <center><h1>301 moved permanently</h1></center> <hr><center>nginx/1.10.3</center> </body> </html>を追加しないでください。その場合、http://192.168.1.23/proxy または http://192.168.1.23/proxy/ へのアクセスは失敗します。 ##この構成の後、http://192.168.1.23/proxy/ へのアクセスは、http://192.168.1.5:8090/proxy/
へのリバース プロキシになります。
[root@localhost conf.d]# cat test.conf server { listen 80; server_name localhost; location / { root /var/www/html; index index.html; } location /proxy/ { proxy_pass http://192.168.1.5:8090; } } [root@localhost conf.d]# service nginx restart redirecting to /bin/systemctl restart nginx.serviceこのように設定した場合、http://103.110.186.23/proxy にアクセスし、http://192.168.1.5:8090/ にプロキシします。 haha/
4) 4 番目の状況: 3 番目の構成と比較して、URL に "/"
[root@localhost conf.d]# cat test.conf server { listen 80; server_name localhost; location / { root /var/www/html; index index.html; } location /proxy/ { proxy_pass http://192.168.1.5:8090/haha/; } } [root@localhost conf.d]# service nginx restart redirecting to /bin/systemctl restart nginx.service [root@localhost conf.d]# curl http://192.168.1.23/proxy/ 192.168.1.5 haha-index.html
が追加されていません。上記の構成の後、アクセスします。 http://192.168.1.23/proxy/index.html は http://192.168.1.5:8090/hahaindex.html へのプロキシになります。同様に、http://192.168.1.23/proxy/test.html にアクセスしてください。 http://192.168.1.5:8090/hahatest.html
[root@localhost conf.d]# cat test.conf server { listen 80; server_name localhost; location / { root /var/www/html; index index.html; } location /proxy/ { proxy_pass http://192.168.1.5:8090/haha; } } [root@localhost conf.d]# service nginx restart redirecting to /bin/systemctl restart nginx.service [root@localhost conf.d]# curl http://192.168.1.23/proxy/index.html 192.168.1.5 hahaindex.htmlにプロキシされます。この場合、http://192.168.1.23/proxy/ に直接アクセスできないことに注意してください。デフォルトのindex.htmlファイルでも維持する必要があります。そうしないと、アクセスが失敗します。
上記の 4 つのメソッドはすべて、一致するパスの後に「/」を追加します。パスの後に「/」がない場合について説明します:
1) 最初のケース、proxy_pass URL が続きます。 "/" による:
[root@localhost conf.d]# curl http://192.168.1.23/proxy/index.html 192.168.1.5 hahaindex.html
##2) 2 番目のケースでは、proxy_pass の後の URL に「/」が続きません。
[root@localhost conf.d]# cat test.conf server { listen 80; server_name localhost; location / { root /var/www/html; index index.html; } location /proxy { proxy_pass http://192.168.1.5:8090/; } } [root@localhost conf.d]# service nginx restart redirecting to /bin/systemctl restart nginx.service
このように構成すると、http://103.110.186.23/proxy にアクセスすると、自動的に「/」が追加され (http://103.110.186.23/proxy/ になります)、プロキシが192.168.1.5 になります: 8090/proxy/
3) 3 番目のケース
[root@localhost conf.d]# cat test.conf server { listen 80; server_name localhost; location / { root /var/www/html; index index.html; } location /proxy { proxy_pass http://192.168.1.5:8090; } } [root@localhost conf.d]# service nginx restart redirecting to /bin/systemctl restart nginx.service [root@localhost conf.d]#
このように設定されている場合、http://103.110 にアクセスします。 186.23/proxy は自動的に「/」を追加し (つまり、http://103.110.186.23/proxy/ になります)、http://192.168.1.5:8090/haha/
にプロキシします。
4) 4 番目の状況: 3 番目の構成と比較すると、URL に「/」
[root@localhost conf.d]# cat test.conf server { listen 80; server_name localhost; location / { root /var/www/html; index index.html; } location /proxy { proxy_pass http://192.168.1.5:8090/haha/; } } [root@localhost conf.d]# service nginx restart redirecting to /bin/systemctl restart nginx.service
が追加されていません。このように構成されている場合は、アクセスします。 http://103.110.186.23/proxy、3 番目の結果は同じで、http://192.168.1.5:8090/haha/
にもプロキシされます。以上がnginx proxy_pass リバースプロキシ構成例の分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。