この質問はおそらく何度か聞かれましたが、私が見つけることができるすべての結果と私の知識がほとんどないので、私はちょっと迷っています。私はFedora29を使用しています。
私がnginxでやろうとしていること:
サンプル :
application.domain.com-> https://hostname1.domain.local (またはIP 1)
test.domain.com-> https://hostname2.domain.local:1234 (またはIP 2)
www.domain.com-> https://hostname3.domain.local (またはIP 3)など...
どうすればそれができますか? nginx設定を自動的に暗号化してみましょうが、少し多すぎるようです。
答えてくれてありがとう、今は仕事をしていなくても、ある程度は進歩していると感じています。 「502 Bad Gateway」エラーが発生したため、ここにすべての設定ファイルを投稿します。 IPはリバースプロキシと同じサブネットにはありませんが、完全にアクセス可能であり、ファイアウォールやルーティングの問題はありません。
前進するためにどこに目を向けることができるか考えていますか?元の構成には、暗号とプロトコルを含むcertbotconfファイルもあります。多分私はそれを再び含める必要がありますか?
また、アクセスしようとしている内部サーバーには、自分のAD CSで署名された証明書がありますが、リバースプロキシにルート証明書がインストールされていません。多分私はすべきですか?
# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 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"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 4096;
include /etc/nginx/mime.types;
default_type application/octet-stream;
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;
server {
listen 80;
server_name _;
return 301 https://$Host$request_uri;
}
server {
listen 443 ssl;
server_name scans.domain.com;
ssl on;
ssl_certificate /etc/letsencrypt/live/www.domain.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/www.domain.com/privkey.pem; # managed by Certbot
location / {
proxy_pass https://192.168.XX.YY/;
}
}
}
NGINXに複数のドメイン名を独立したプロキシに解決させるには、使用しているドメインごとにサーバーブロックをセットアップする必要があります(そうです、LEが提供するinclude
が必要です)。
server { listen 443 ssl; server_name application.domain.com; ssl on; ssl_certificate /etc/letsencrypt/live/www.domain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/www.domain.com/privkey.pem; include /etc/letsencrypt/options-ssl-nginx.conf; location / { proxy_pass https://hostname1.domain.local:80/; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $Host; proxy_cache_bypass $http_upgrade; } } server { listen 443 ssl; server_name test.domain.com; ssl on; ssl_certificate /etc/letsencrypt/live/www.domain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/www.domain.com/privkey.pem; include /etc/letsencrypt/options-ssl-nginx.conf; location / { proxy_pass https://hostname3.domain.local:80/; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $Host; proxy_cache_bypass $http_upgrade; } } server { listen 443 ssl; server_name www.domain.com; ssl on; ssl_certificate /etc/letsencrypt/live/www.domain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/www.domain.com/privkey.pem; include /etc/letsencrypt/options-ssl-nginx.conf; location / { proxy_pass https://hostname2.domain.local:1234/; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $Host; proxy_cache_bypass $http_upgrade; } }
http.conf構成で、ポート80に着信するすべてのトラフィックを転送するようにリダイレクトするルールを指定できます(ドメインに依存しません):server { listen 80; server_name _; return 301 https://$Host$request_uri; }
https> httpを転送しようとしている場合は、リバースプロキシ構成も必要になります。次のように機能します。
server { listen 443 ssl; server_name application.domain.com; ssl on; ssl_certificate /etc/ssl/public/application.domain.com.combined; ssl_certificate_key /etc/ssl/private/application.domain.com.key; location / { proxy_pass http://hostname1.domain.local:80/; } }
各Webサイトを異なるポートに配置する必要はないことに注意してください。nginxはドメイン名に基づいてクライアントに提供するコンテンツを認識しています。
よろしく、