Apache への Nginx リバース プロキシが動作していますか?

Apache への Nginx リバース プロキシが動作していますか?

私はメインサーバーとしてnginxをセットアップし、ポート8080でApacheへのリバースプロキシとして使用しています。apache.example.ioのnginx設定ファイルは次のとおりです。

#
# apache.example.io
# Testing apache + nginx
#

server {
        listen 80; 

        root /var/www/apache-example-io; 
        index index.php index.html index.htm;

        server_name apache.example.io www.apache.example.io; 

        location / {
            try_files $uri $uri/ /index.php;
        }   

        location ~ \.php$ {
            proxy_set_header X-Real-IP  $remote_addr;
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_set_header Host $host;
            proxy_pass http://127.0.0.1:8080;
        }

         location ~ /\.ht {
                deny all;
        }
}

そして、これがApache仮想ホスト用のファイルです

<VirtualHost 127.0.0.1:8080>
    ServerName apache.example.io
    ServerAlias www.apache.example.io
    ErrorLog /var/www/apache-example-io/errror.log
    DocumentRoot /var/www/apache-example-io/public_html
    <Directory "/var/www/apache-example-io/public_html">
       # Order allow,deny
       # Allow from all
       # New directive needed in Apache 2.4.3: 
       # Require all granted
       AllowOverride All
    </Directory>
</VirtualHost>

これらは問題なく動作しますhttp://apache.example.io/index しかし、訪問すると403 nginxエラーが発生します参考: これを修正する方法がわかりません。nginx のエラー ログは次のようになります。

2018/03/14 21:25:24 [エラー] 24730#0:6 ディレクトリ インデックス「/var/www/」は禁止されています。クライアント: 211。サーバー: apache.example.io、リクエスト: "GET / HTTP/1.1"、ホスト: "apache.example.io"

グーグルで検索して修正を試みても無駄でした :(

答え1

つまり、自分のサーバーに直接接続する特定のドメインを単に再ルーティングしていたため、デフォルト ルートを設定していなかったことが判明しました。

私は開きました

デフォルト

そして、次のように付け加えました:

server {
  listen 80 default_server; 
  return 404;
}

これにより、指定されていないワイルドカード ドメインなどは、単に 404 に転送されるようになります。新しいドメインを追加する場合は、nginx (NodeJS アプリケーション) を使用して新しいファイルを作成し、その IP に転送するか、PHP コンテンツの提供用に Apache 仮想ホストを作成します。:)

関連情報