8

私は Apache インスティレーションのリバース プロキシとして Nginx を使用しています。また、セキュリティ機能として、localhost 以外のすべての人の phpmyadmin、webalizer などへのアクセスをブロックしますが、nginx を使用すると、Apache は localhost であると認識し、すべての人に公開されます。

<LocationMatch "^/(?i:(?:xampp|security|phpmyadmin|licenses|webalizer|server-status|server-info))">
    Order deny,allow
    Deny from all
    Allow from ::1 127.0.0.0/8 \
        fc00::/7 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 \
        fe80::/10 169.254.0.0/16

    ErrorDocument 403 /
</LocationMatch>

上記のルール パターン マッチング正規表現を次のように変更する必要があります。

location /phpmyadmin {
        proxy_pass         htt://127.0.0.1:8080/phpmyadmin;
        allow 127.0.0.1;
        deny all;
    }

Nginx の正規表現に精通している方からの助けに感謝します。

次の方法は機能しますが、domain.com/forums/server-info などの検索エンジンに適した通常のサイトの URL が機能しなくなります。

location ~ /(xampp|security|phpmyadmin|licenses|webalizer|server-status|server-info) {
    deny  all;
}
4

2 に答える 2

9

Apache の正規表現には '^' があるため、パスの先頭から強制的に一致させるために '^' を入れることもできます。

location ~ ^/(xampp|security|phpmyadmin|licenses|webalizer|server-status|server-info) {
  proxy_pass         http://127.0.0.1:8080$request_uri;
  .... allow/deny directives come here
}

[編集] 括弧内の一致した文字列は $1 に格納されます。だからあなたは試すことができます

http://127.0.0.1:8080/$1

それがあなたの望みなら。ただし、URI パス全体を apache サーバーに渡したいというのが私の理解です。その場合、nginx 変数 $request_uri を使用する方が簡単です。

于 2013-03-16T18:38:36.933 に答える
2

かなり持っているようです。セキュリティのために、nginx は上から下に読み取るため、最後に deny all を残します。

location /(xampp|security|phpmyadmin|licenses|webalizer|server-status|server-info) {
  allow from ::1;
  allow from fc00::/7;
  allow from fe80::/10;
  allow 127.0.0.0/8;
  allow 10.0.0.0/8;
  allow 172.16.0.0/12;
  allow 192.168.0.0/16;
  allow 169.254.0.0/16;
  deny all;
}

/phpmyadminこれは、 などの任意の URL に適用されることに注意してください/someplaceelse/phpmyadmin。一致する場合のみ、この一致の先頭に ^ を追加できますhttp://host/phpmyadmin。この場合、これを複数の場所ディレクティブに分割する必要があるかもしれません。

検索エンジンフレンドリーの意味がわかりません。server-info にアクセスできるようにしたい場合は、単に正規表現から削除してください | ケース。

phpmyadmin プロキシの場合:

location ^/phpmyadmin {
    proxy_pass    http://127.0.0.1:8080; 
}

nginx は場所の一致のすべてを取得し、それを追加しますhttp://127.0.0.1:8080

たとえば、~ を使用してこの動作を変更できます。 http://wiki.nginx.org/HttpCoreModule#location

于 2013-03-16T17:49:30.840 に答える