Nginx : リバースプロキシの設定2021/08/06 |
Nginx でのリバースプロキシの設定です。
例として、ホスト [www.srv.world] の Nginx サーバーで受けた HTTP/HTTPS アクセスを、バックエンドホスト [node01.srv.world] の
Nginx サーバーへ転送するよう設定します。
|
|
[1] | |
[2] | Nginx の設定です。 |
# [server] セクション内を以下のように変更
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name www.srv.world;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
location / {
proxy_pass http://node01.srv.world/;
}
}
# 新規作成 # 証明書は自身のものに置き換え server { listen 443 ssl http2 default_server; listen [::]:443 ssl http2 default_server; server_name www.srv.world; ssl_certificate "/etc/letsencrypt/live/www.srv.world/fullchain.pem"; ssl_certificate_key "/etc/letsencrypt/live/www.srv.world/privkey.pem"; ssl_session_cache shared:SSL:1m; ssl_session_timeout 10m; ssl_ciphers PROFILE=SYSTEM; ssl_prefer_server_ciphers on; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; location / { proxy_pass http://node01.srv.world/; } } systemctl restart nginx |
[3] | SELnux を有効にしている場合は、ブール値の変更が必要です。 |
[root@www ~]# setsebool -P httpd_can_network_connect on
|
[4] | バックエンド Nginx サーバーで X-Forwarded-For ヘッダーをロギングするよう設定しておきます。 |
[root@node01 ~]#
vi /etc/nginx/nginx.conf # [http] セクション内の [log_format] 設定確認 # [http_x_forwarded_for] があれば OK http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; # [server] セクション内に追記 # [set_real_ip_from] は自身の信頼できる内部ネットワークを指定
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name node01.srv.world;
root /usr/share/nginx/html;
set_real_ip_from 10.0.0.0/24;
real_ip_header X-Forwarded-For;
[root@node01 ~]# systemctl restart nginx |
[5] | 任意のクライアントホストからフロントエンドの Nginx サーバーへ HTTP/HTTPS アクセスして動作を確認します。 また、バックエンドの Nginx ログ [/var/log/nginx/access.log] にアクセス元のクライアントホストの IP アドレスがロギングされていることも確認しておくとよいでしょう。 |
Sponsored Link |