1

仕事で 80 と 443 以外のポートにアクセスできないため、QNAP で Apache を使用していくつかのリソースにアクセスできるようにしたいと考えています。

特に、次のことを希望します。

  1. 仮想ホスト (sub1.domain.com を使用) を設定して、同じホスト (私の QNAP) ( http://localhost:58000 )で実行されているサービスに接続します。
  2. 仮想ホスト (sub2.domain.com を使用) を設定して、LAN 内の別のホストに接続します ( http://192.168.1.1:78080 )
  3. 仮想ホストを (sub3.domain.com を使用して) 外部 Web サイト (例: https://www.google.com )に接続するように設定します。

proxy_module と proxy_ssl_module をアクティブにする (それに応じて DNS を変更する) 以外に、httpd-vhosts-user.conf (1. と 2. の場合) と httpd-ssl-vhosts-user.conf (2. の場合) で次の行コードを使用することを考えました。 3.):

一般的なセクション (参考までに):

/etc/config/apache/extra/httpd-vhosts-user.conf

    NameVirtualHost *:80

    <VirtualHost _default_:80>
       DocumentRoot "/share/Web"
    </VirtualHost>

/etc/config/apache/extra/httpd-ssl-vhosts-user.conf

    NameVirtualHost *:443

    <VirtualHost _default_:443>
       DocumentRoot "/share/Web"
    </VirtualHost>
  1. http://localhost:58000で実行されているサービスに接続するための仮想ホスト

    <VirtualHost *:80>
       ServerName sub1.domain.com
       DocumentRoot "/share/Web/sub1"
    
       ProxyPreserveHost On 
       ProxyRequests Off 
       ProxyVia Off 
        ProxyPass /sub1 http://localhost:58000
        ProxyHTMLURLMap http://localhost:58000 /sub1
    
       <Location /sub1>
          ProxyPassReverse /
          ProxyHTMLInterp On
          ProxyHTMLURLMap  /      /sub1
          RequestHeader    unset  Accept-Encoding
       </Location>
    
       <Proxy *>
          AddDefaultCharset off
          Order deny,allow
          Deny from all
          Allow from all
       </Proxy>
    
       <Directory "/share/Web/sub1">
          Options FollowSymLinks MultiViews 
          Order allow,deny 
          Allow from all
       </Directory>   
    </VirtualHost>
    
  2. http://192.168.1.1:78080で実行されている他のサービスに接続する仮想ホスト

    <VirtualHost *:80>
       ServerName sub2.domain.com
       DocumentRoot "/share/Web/sub2"
    
       ProxyPreserveHost On 
       ProxyRequests Off 
       ProxyVia Off 
       ProxyPass /sub2 http://192.168.1.1:78080
       ProxyHTMLURLMap http://192.168.1.1:78080 /sub2
    
       <Location /Asus>
          ProxyPassReverse /
          ProxyHTMLInterp On
          ProxyHTMLURLMap  /      /sub2
          RequestHeader    unset  Accept-Encoding
       </Location>
    
       <Proxy *>
          AddDefaultCharset off
          Order deny,allow
          Deny from all
          Allow from all
       </Proxy>
    
       <Directory "/share/Web/sub2">
          Options FollowSymLinks MultiViews 
          Order allow,deny 
          Allow from all
       </Directory>
    </VirtualHost>
    
  3. 指定された外部サイト (例: Google) に接続するための仮想ホスト [ kamal @ serverfault.comのクレジット]

    <VirtualHost *:443>
       ServerName sub3.domain.com
    
       ProxyPreserveHost On
    
       <Proxy *>
          AddDefaultCharset off
          Order deny,allow
          Deny from all
          Allow from all
       </Proxy>
    
        ProxyPass /sub3 https://www.google.com/
        ProxyHTMLURLMap https://www.google.com /sub3
    
       <Location /sub3>
          ProxyPassReverse /
          ProxyHTMLInterp On
          ProxyHTMLURLMap  /      /sub3
          RequestHeader    unset  Accept-Encoding
       </Location>
    </VirtualHost>
    

ただし、これらの仮想ホストはどれも機能しません (接続に失敗するか、ロードが無限に続きます)。

誰かがコードのレビューを手伝ってくれませんか?

事前にどうもありがとうございました!

4

1 に答える 1

1

答えは次のとおりです。

  1. http://localhost:58000で実行されているサービスに接続するための仮想ホスト

    <VirtualHost *:80>
    ServerName sub1.domain.com
    ProxyRequests Off
    <Proxy *>
    Order deny,allow
    Allow from all
    </Proxy>
    <Location />
    Order allow,deny
    Allow from all
    </Location>
    ProxyPreserveHost On
    ProxyPass / http://localhost:58000/
    ProxyPassReverse / http://localhost:58000/
    ProxyStatus On
    </VirtualHost>
    
  2. http://192.168.1.1:78080で実行されている他のサービスに接続する仮想ホスト

    <VirtualHost *:80>
    ServerName sub2.domain.com
    ProxyRequests Off
    <Proxy *>
    Order deny,allow
    Allow from all
    </Proxy>
    <Location />
    Order allow,deny
    Allow from all
    </Location> 
    ProxyPreserveHost On
    ProxyPass / http://192.168.1.1:78080/
    ProxyPassReverse / http://192.168.1.1:78080/
    ProxyStatus On
    </VirtualHost>
    
  3. 指定された外部サイトに接続するための仮想ホスト (HTTP のみの google など)

    <VirtualHost *:80>
    ServerName sub3.domain.com
    DocumentRoot "/share/Web"
    <Directory "/share/Web">
    Options Indexes Includes FollowSymLinks
    AllowOverride All
    Order Allow,Deny
    Allow from all
    Deny from none
    </Directory>
    <Location />
    ProxyPass http://google.com/
    ProxyPassReverse http://google.com/
    </Location>
    </Virtualhost>
    
于 2016-03-01T08:53:27.020 に答える