前提・実現したいこと
Nginxで社内グローバルIPからのアクセスと、サイトアクセス(ポータルからのアクセスのみ許可)からの二つのアクセスを、proxy_passに定義した同一サーバにアクセスさせたいです。
///////////////////////////////////////////////////////////////
【実現したいこと】
ユーザ ---> Portal ---> Server(proxy_passに定義している宛先) #現状ここはできています。
社内GIP -------------------↑ #このアクセスが上と併用して実現できない。
(10.0.0.1/32(仮))
///////////////////////////////////////////////////////////////
上記portal経由のServerアクセスについては、valid_refererにて定義を行い、制御を実現できていますが、社内NW同一のproxy_passへアクセスすることができません。
バーチャルホストを複数定義すれば実現はできるのですが、1つのバーチャルホスト内で実現したいです。(色々理由がありまして、、)
実現方法など何卒お力添えいただきたくお願いします。
referer設定
default.conf(一部のみ抜粋)
server{ listen 443 ssl; server_name hoge.expamle.com; ・ ・ ・ location / { valid_referers server_names *.hogehoge.example.com; #hogehoge.example.comからのアクセス許可 if ($invalid_referer) { return 403; } proxy_pass http://xxx.xxx.xxx.xxx/; proxy_redirect default; } }
試したこと
geoディレクティブを定義し、ifを使用してアクセス元のIPの振分を行いましたが、locationの中では使えずに定義エラーとなってしまいます。
geo $allow_ip { default 0; # 許可したいIPアドレス 10.0.0.1/32 1; } ・ ・ ・ location / { if ($allow_ip = 1) { proxy_pass http://xxx.xxx.xxx.xxx/; proxy_redirect default; } if ($allow_ip = 0) { valid_referers server_names *.hogehoge.example.com; if ($invalid_referer) { return 403; } proxy_pass http://xxx.xxx.xxx.xxx/; proxy_redirect default; } }
補足情報(FW/ツールのバージョンなど)
NginxはDockerで検証しており、バージョンは1.21.0となります。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/28 05:54