17

I have followed instructions and still I cant password protect my site. This is what my app-nginx.config looks like:

server {
    listen       80;
    server_name  Server_Test;
    auth_basic            "Restricted";
    auth_basic_user_file  /usr/local/nginx/conf/htpasswd;

...

}

Where am I going wrong? I copied and pasted this right from a tutorial site.

4

2 に答える 2

18

Nginxがパスワードファイルにアクセスできることを確認してください。auth_basic_user_fileのパスは、のディレクトリからの相対パスですnginx.conf。したがって、がにいる場合nginx.conf/usr/local/nginx、ディレクティブを次のように変更できます。

auth_basic_user_file  conf/htpasswd;

また、ファイルは読み取り可能である必要があります。

このファイルは、非特権ユーザーから実行されているワーカーが読み取り可能である必要があります。例:nginxがwwwから実行される場合、権限を次のように設定できます。

chown root:nobody htpasswd_file
chmod 640 htpasswd_file

--http://wiki.nginx.org/HttpAuthBasicModuleから

于 2012-09-17T22:43:59.500 に答える
9

nginxサーバーを機能させるだけでなく、ルートフォルダーへのアクセスを保護するように構成することもできます。私の調査結果をあなたと共有したいと思います。また、途中で、このページの質問に対して適切で実用的な回答を提供します。

nginx(バージョン1.10.0-Ubuntu)の新規ユーザーとして。私が抱えている最初の問題はファイルの場所を知ることだったので、ここに重要な場所があります:

あなたの場所を知っている:

メインフォルダの場所: /etc/nginx

デフォルトのサイトの場所:/var/www/または/ver/www/html/htmlフォルダー内にindex.htmlファイルがあります-そこから何をすべきかを知っていることを願っています)。

構成ファイル:

メイン構成ファイル:/etc/nginx/nginx.conf

現在のサイトサーバーの設定:(/etc/nginx/sites-enabled最初のインストール時に、と呼ばれる単一のファイルがあり、それを変更できるようにするに defaultはを使用する必要があります(例:)sudosudo vi default

パスワードを追加します。

それで、プレーヤーがわかったので(とにかく静的なすぐに使えるサイトの場合)、いくつかのファイルを「html」フォルダーに入れて、それにパスワード保護を追加しましょう。

パスワードを設定するには、次の2つのことを行う必要があります。1。パスワードファイルを作成します(必要な数のユーザーを使用しますが、1で解決します)。2.このページを制限するように現在のサーバー(「デフォルト」)を構成し、1のファイルを使用してパスワード保護を有効にします。

1.パスワードを作成しましょう:

これに使用したい行は次のとおりです:( sudo htpasswd -c /etc/nginx/.htpasswd johnパスワードの入力と再入力を求めるプロンプトが表示されます)ここで1行で実行できます: sudo htpasswd -c /etc/nginx/.htpasswd john [your password]

コマンドの各部分について説明します。

  • sudo htpasswd-より高い権限を使用して実行します。
  • -c --for:ファイルを作成します(既存のユーザーに別のユーザーを追加するには、この引数をスキップします)
  • /etc/nginx/.htpasswd-作成されたファイルの名前(/ etc /nginxフォルダー内の「.htpsswd」)
  • johnユーザーの名前です(プロンプトが表示された「user」フィールドに入力します)
  • passwordこの特定のユーザー名に必要なパスワードです。(プロンプトが表示されたら..)

通常、htpasswdコマンドは機能しないため、次のパッケージをインストールする必要があります。

使用:(sudo apt-get install apache2-utils失敗した場合は、使用しsudo apt-get updateて再試行してください)

2.このファイルを認証に使用するようにサーバーを構成しましょう

この行を使用して、現在の(デフォルトの)サーバーconfファイルを編集してみましょう。

sudo vi /etc/nginx/sites-enabled/default(「vi」を使用する必要はありませんが、私はそれが好きです。)

ほとんどのコメント(#)を削除すると、ファイルは次のようになります。

# Default server configuration
#
server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;

    # Add index.php to the list if you are using PHP
    index index.html index.htm index.nginx-debian.html;

    server_name _;

    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files $uri $uri/ =404;
    }

}

ブロック内に場所(「/」はサイトのルートフォルダを指す)の2行を追加する必要があるため、次のようになります。

    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files $uri $uri/ =404;

        auth_basic "Restricted Content";
        auth_basic_user_file /etc/nginx/.htpasswd;
     }

これらの新しい行について説明します。

  • auth_basic "Restricted Content";-アクセス管理のタイプを定義します
  • auth_basic_user_file /etc/nginx/.htpasswd;-作成したファイル(/etc/nginx/.htppasswd)をこの認証のパスワードファイルとして定義します。

サービスを再起動して、パスワードで保護されたサイトを楽しんでみましょう。

sudo service nginx restart

ビオラ-お楽しみください...

これについては、さらに優れたチュートリアルがいくつかあります。

とても良い説明

別のgooチュートリアル

于 2017-05-25T13:45:18.490 に答える