kestrel用のプロキシサーバとしてnginxを設定します(ASP.Net Core)


0

私は自分のアプリケーションをホストするためにASP.NETコア環境をセットアップしようとしていますが、私はnginxウェブサーバーに問題があります。ドメインに接続しようとすると 502 Bad Gateway。 Nginxは単にkestrelのプロキシサーバーとして動作するべきです。

ここに 私がフォローしているガイドへのリンクです。設定はほとんどマイクロソフトによって提案されている設定です私はちょうど環境ごとに異なる変数を変更しました。

問題のある行は http://aspdotnethost; nginx.conf設定の最後にあります。コメントアウトすると、デフォルトのwwwの場所にリダイレクトされます。

では、その行は実際にはどのように機能し、localhost:5000に正しくリダイレ​​クトするように管理するにはどうすればよいでしょうか。

/etc/nginx/proxy.conf

proxy_redirect          off;
proxy_set_header        Host            $host;
proxy_set_header        X-Real-IP       $remote_addr;
proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header    X-Forwarded-Proto $scheme;
client_max_body_size    10m;
client_body_buffer_size 128k;
proxy_connect_timeout   90;
proxy_send_timeout      90;
proxy_read_timeout      90;
proxy_buffers           32 4k;

/etc/nginx/nginx.conf

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    include    /etc/nginx/proxy.conf;
    limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s;
    server_tokens off;

    sendfile on;
    keepalive_timeout 29; # Adjust to the lowest possible value that makes sense for your use case.
    client_body_timeout 10; client_header_timeout 10; send_timeout 10;

    upstream aspdotnethost {
        server localhost:5000;
    }

    server {
        listen *:80;
        add_header Strict-Transport-Security max-age=15768000;
        return 301 https://$host$request_uri;
    }

    server {
        listen *:443    ssl;
        server_name     example.com *.example.com;

        #Redirects all traffic
        location / {
            proxy_pass  http://aspdotnethost;
            limit_req   zone=one burst=10;
        }
    }

}

Nginxの設定チェック:

[root@rs-zap353479-1 patrick]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

入力すると curl http://localhost:5000 それから私は返されたhtmlドキュメントを得ます。それで、その構成要素は私の目では素晴らしいはずです。


実行するとどうなりますか curl 'http://aspdotnethost' CentOSのホスト上で?
Eugen Rieck

Name or service not known それで、名前またはサービスがわかっていることをどうすればいいですか

編集する /etc/hosts の名前の下にASPホストのIPを含める aspdotnethost (あなたがあなたのnginx設定でそれを呼んだように)
Eugen Rieck

回答:


0

Eugen Rieckがコメントとして投稿したようなので私はにエイリアスを追加しなければならなかった /etc/hosts

追加のステップとして、私は指定しなければなりません proxy_temp_path の中に proxy.conf、そのパスを作成し、nginxを実行しているユーザーに変更します(私の場合)。 nginx

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.