2

特定の管理ページへのアクセスを制限しようとしています。ただし、nginx.confに次の構成があります。

server {
    listen   80; ## listen for ipv4; this line is default and implied

    root /var/www;
    server_name asdf;

    location / {
            proxy_pass http://192.168.1.1:88/;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
    }
    #location /server/administrator/ {
    #       allow 127.0.0.0/24;
    #       allow my.ip/32;
    #}
}

すべてがこの構成で機能し、リクエストはポート 88 でリッスンしている apache2 に渡されます。ただし、アクセス制限からコメントを削除すると、index.php が処理される代わりにダウンロードされます。多分誰かがこれを前に見たことがありますか?

4

3 に答える 3

1

最初の場所は Apache に渡されますが、2 番目の場所は PHP が何であるかを知らない NginX によって処理されるため、バイナリ ファイルとしてダウンロードできます。

NginX が提供するヘッダーをserver/administrator/index.php検査することで、アクセス制御を簡単にセットアップできます。X-REAL-IP

if ($_SERVER["HTTP_X_REAL_IP"] != 'my IP')
{
    if (false === strpos($_SERVER["HTTP_X_REAL_IP"], '127.0.0.'))
    {
        // 302 redirect to home
        Header("Location: http://yoursite/");
        die("Access denied");
    }
}
于 2012-11-27T15:41:16.997 に答える
1

管理ページが 192.168.1.1 バックエンドにある場合、ロケーション ブロックは次のようにする必要があります

location /server/administrator/ {
    proxy_pass http://192.168.1.1:88;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    allow 127.0.0.0/24;
    allow my.ip/32;
    deny all;
}

許可されている 2 つを除くすべてを拒否したい場合は、nginx に特定の場所でリクエストをプロキシする場所を伝える必要があります

編集:

管理ページが nginx ボックスにあり、それを実行したい場合は、fastcgi または php-fpm を実行する必要があります。Apache とは異なり、nginx は独自に php やその他のサーバー側スクリプトを提供しませんが、proxy_pass の代わりに fastcgi_pass を使用して fastcgi のようなバックエンドと通信できます。

これをチェックして、php-fpmでnginxを実行する方法についてのアイデアを得る

http://www.lifelinux.com/how-to-install-nginx-and-php-fpm-on-centos-6-via-yum/

于 2012-11-27T13:18:59.730 に答える
0
server {
    listen   80;

    location / {
        proxy_pass http://192.168.1.1:88;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;

        location /server/administrator/ {
            allow 127.0.0.0/24;
            allow my.ip/32;
            proxy_pass http://192.168.1.1:88;
        }
    }
}

proxy_pass新しい場所に置き忘れました。

見る:

于 2012-11-27T18:20:00.293 に答える