ホームページ  >  記事  >  運用・保守  >  nginx proxy_pass リバースプロキシ構成例の分析

nginx proxy_pass リバースプロキシ構成例の分析

王林
王林転載
2023-05-13 23:19:111187ブラウズ

以下は小さな例です:

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.service

5) テスト アクセス (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

nginx proxy_pass反向代理配置实例分析

192.168.1.23 は nginx リバース プロキシ マシンとして機能し、nginx の構成は次のとおりです。

1) 最初のケース:

[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


に存在する必要はありません。ターミナルで http://192.168.1.23/proxy にアクセスする場合は注意してください。後ろに「/」がないと)、アクセスは失敗します。 proxy_passで設定したURLの後に「/」が追加されているため「/」)、http://103.110.186.5:8090

2)の結果と逆になります。 2 番目のケースでは、proxy_pass 設定の URL の後に "/"nginx proxy_pass反向代理配置实例分析

[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/


へのリバース プロキシになります。

#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
nginx proxy_pass反向代理配置实例分析 このように設定した場合、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.htmlnginx proxy_pass反向代理配置实例分析 へのプロキシになります。同様に、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 つのメソッドはすべて、一致するパスの後に「/」を追加します。パスの後に「/」がない場合について説明します: nginx proxy_pass反向代理配置实例分析
1) 最初のケース、proxy_pass URL が続きます。 "/" による:

[root@localhost conf.d]# curl http://192.168.1.23/proxy/index.html
192.168.1.5 hahaindex.html


nginx proxy_pass反向代理配置实例分析
##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/nginx proxy_pass反向代理配置实例分析

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/nginx proxy_pass反向代理配置实例分析

にプロキシします。

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

nginx proxy_pass反向代理配置实例分析

が追加されていません。このように構成されている場合は、アクセスします。 http://103.110.186.23/proxy、3 番目の結果は同じで、http://192.168.1.5:8090/haha/

にもプロキシされます。

以上がnginx proxy_pass リバースプロキシ構成例の分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。