day85-モールビジネス-nginx-ドメイン名アクセス環境2の構築(ゲートウェイへの負荷分散)

以前はnginxからサービスへの負荷分散を実装していましたが、サービスが非常に多いため、作成するのが非常に面倒で、ゲートウェイによる統合処理がありません。

そのため、今回はnginxロードバランスがゲートウェイに実装され、ゲートウェイが各サービスにルーティングされます

1.関連する公式文書を参照してください

 

2つのステップがあることがわかります。1。アップストリームサーバーを構成します。2。プロキシを構成します。

2. nginxの全体的な構成ファイルで、アップストリームサーバーを構成します

ここでゲートウェイを構成します

[root@10 ~]# cd /
[root@10 /]# ls
bin  boot  dev  -e  etc  home  lib  lib64  media  mnt  mydata  opt  proc  root  run  sbin  srv  swapfile  sys  tmp  usr  -v  vagrant  var
[root@10 /]# cd mydata/nginx/conf/
[root@10 conf]# ls
conf.d  fastcgi_params  koi-utf  koi-win  mime.types  modules  nginx.conf  scgi_params  uwsgi_params  win-utf
[root@10 conf]# vi nginx.conf

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    upstream gulimall{
        server  192.168.56.1:88;
        }
    include /etc/nginx/conf.d/*.conf;
"nginx.conf" 35L, 694C written

上記の段落を追加しました

これはマシンのゲートウェイです。実際のプロジェクトには複数のゲートウェイがある場合があります。その時点で、複数のゲートウェイを構成すると、プロジェクトは終了します。

 2.プロキシ構成

以前に構成したエージェントをコモディティサービスに追加します

上で構成されたアップストリームサーバーへのプロキシに変更します

[root@10 conf.d]# ls
default.conf  gulimall.conf
[root@10 conf.d]# vi gulimall.conf

server {
    listen       80;
    server_name  gulimall.com;

    #charset koi8-r;
    #access_log  /var/log/nginx/log/host.access.log  main;

    location / {
        proxy_pass http://gulimall;
    }

    #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   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
"gulimall.conf" 44L, 1061C written
[root@10 conf.d]# docker restart nginx
nginx
[root@10 conf.d]# docker ps
CONTAINER ID   IMAGE                 COMMAND                  CREATED       STATUS         PORTS                                            NAMES
85e5c45a30da   nginx:1.10            "nginx -g 'daemon of…"   4 weeks ago   Up 5 seconds   0.0.0.0:80->80/tcp, 443/tcp                      nginx
6919debe7c73   elasticsearch:7.4.2   "/usr/local/bin/dock…"   4 weeks ago   Up 2 hours     0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp   elasticsearch
fda06f05a0a0   kibana:7.4.2          "/usr/local/bin/dumb…"   4 weeks ago   Up 2 hours     0.0.0.0:5601->5601/tcp                           kibana
69e789223ef0   redis                 "docker-entrypoint.s…"   4 weeks ago   Up 2 hours     0.0.0.0:6379->6379/tcp                           redis
7c3556ac5cf1   mysql:5.7             "docker-entrypoint.s…"   4 weeks ago   Up 2 hours     0.0.0.0:3306->3306/tcp, 33060/tcp                mysql

3.ホストルーティングを構成します

上記の構成後、引き続き404を報告します。理由は、ゲートウェイがルーティングルールを構成していないためです。

 以前のアドレスルーティングとは異なり、ここではホストルーティングを構成する必要がありますhttps://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.1.3.RELEASE/single/spring-cloud-gateway .html

 見られます

そのため、ゲートモジュールの構成に次のルートを追加します。この構成を下部に配置することを忘れないでください。具体的な理由については説明しません。再起動

        - id: gulimall_host_route
          uri: lb://gulimall-product
          predicates:
            - Host=**.gulimall.com

 4.ホスト名の損失の問題を解決します

再起動後、アクセス後も404のままです

特定のコントローラーでのリクエスト全体から、次のアクセス手順を通じて、nginxがゲートウェイに読み込まれ、ゲートウェイがルーティングを実装します

 では、なぜgulimall.comまたは404にアクセスするのですか?その理由は、nginxがゲートウェイにプロキシすると、要求されたホスト情報が失われるためです。これは次のようなものです。

次に、前にgulimall.confで追加した構成に構成を追加する必要があります。最後に、引用符を忘れないでください。

proxy_set_header Host $host;

構成後にnginxを再起動します

もう一度アクセスすると、製品のホームページが表示されます

 5.まとめ

まず、Windowsでマッピングを構成し、gulimall.comを仮想マシンにマッピングし、この時点で仮想マシンのデフォルトポート80にアクセスして監視します。この時点で、nginxはそれに応じてゲートウェイにプロキシします。構成に追加されますが、ゲートウェイにプロキシすると失われます。ホスト名ヘッダーなので、構成を追加する必要があります。ゲートウェイは、ホストがgulimall.comのように見えます。ルーティングに構成があるため、直接製品ページのホームページにルーティングします。

これまでに以下を達成しました

 

おすすめ

転載: blog.csdn.net/JavaCoder_juejue/article/details/112858021