web-dev-qa-db-ja.com

OpenWRTリダイレクト着信WANドメイン名に基づくトラフィック

OpenWRTファームウェアを備えたルーターと、異なるWebサイトをホストするローカルネットワーク内の2台のコンピューターがあります。また、2つのドメイン名(domain1domain2)があり、どちらもルーターのWAN IPアドレスを指しています。ポートで着信要求を受け入れるようにルーターを設定しました。 80そしてそれらを最初のコンピュータにリダイレクトします。したがって、すべてのトラフィックは単一のマシンにリダイレクトされます。domain2と入力するたびに2番目のコンピュータにリダイレクトされるように、ルーターにドメイン名に応じて要求を区別させるにはどうすればよいですか?

2
user2513149

これはルーターの目的ではありません。NAT付きルーターはレイヤー3とレイヤー4(IPとポート)で動作し、必要なものはレイヤー7(アプリケーション:http)で動作します。

TLDR;ホストヘッダーに基づいてトラフィックをルーティングするようにWebプロキシを構成する必要があります。これは、haproxy/keepalivedやnginxなどの冗長なシステムセットである必要があります。これを行う方法については、ここに多くのQ/Aがあります。

リクエストホストヘッダーに基づくmod_proxy転送

とはいえ、ルーターにnginxをインストールする必要がある場合は、可能です。

opkg update
opkg install nginx

/ etc/nginx/nginx.conf

server {
  server_name site1.example.com;

        location / {
          # app1 reverse proxy
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header Host $Host;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_pass http://192.168.1.3:80;
        }

   access_log      /var/log/nginx/site1.example.com_access.log;
   error_log       /var/log/nginx/site1.example.com_error.log;

}

server {
  server_name site1.mydomain.com;

        location / {
          # app2 reverse proxy
          proxy_pass http://192.168.1.4:80;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header Host $Host;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }

   access_log      /var/log/nginx/site1.mydomain.com_access.log;
   error_log       /var/log/nginx/site1.mydomain.com_error.log;

}

ここで、192.168.1.3と192.168.1.4はバックエンドです。

https://wiki.openwrt.org/doc/howto/http.nginx

4
Jacob Evans