レンタルサーバー・自宅サーバー設定・構築のヒント
レンタルサーバー・自宅サーバー設定・構築のヒント - レンタルサーバー・自宅サーバーの設定・構築情報を公開しています。

Nginx でdeny(アクセス拒否 : 403 )するには

2011年6月18日 2015年5月16日
nginx access denied

前回、「Nginx でリダイレクト ( rewrite ) するには」でnginx におけるリダイレクトについて簡単に解説しました。

今回も引き続き、apache からnginx への移行するための環境設定を行ってみます。

その中でも今回は、アクセス拒否 ( deny : 403 )に関してです。

apacheでは .htaccess を使ってのアクセス拒否 ( deny : 403 ) は簡単に行うことができます。
nginxでは、何でも設定ファイル(/etc/nginx/nginx.conf)で実現します。

これも結論から言うと、

if文を使って、
return 403; で HTTP ステータス番号を発行するだけなんです。

簡単な例をあげて解説してみましょう。

nginx でdeny(アクセス拒否 : 403 )する

nginx でdeny(アクセス拒否 : 403 )するには、
apacheでは、.htaccessにて設定していた内容を、nginxでは、設定ファイル(/etc/nginx/nginx.conf)で行うだけです。

やり方もそれほど難しくはないので、簡単にやってみましょう。


Apacheでのdeny(アクセス拒否 : 403 )の例

deny(アクセス拒否 : 403 )するには、
通常、apacheでは、.htaccessにて、以下のような記述を行って対応します。

1
2
3
4
5
6
7
SetEnvIfNoCase User-Agent "baidu.*" deny_f
SetEnvIfNoCase Referer "^http://www\.baidu\.jp" deny_f
...
order allow,deny
allow from all
deny from env=deny_f
deny from 111.222.111.222

これは、以下のような意味になります。

  • 1行目:ユーザエージェント名が、baidu(大文字小文字を区別しない)が含まれているなら、deny_fを設定しなさい。
  • 2行目:リファラー(アクセス元)が、http://www.baidu.jp(大文字小文字を区別しない)からなら、deny_fを設定しなさい。
  • 4行目:アクセスの規制の順番を指定します。ここでは、許可(allow)拒否(deny)の順番で指定します。
  • 5行目:全てのアクセスを許可します。
  • 6行目:deny_fが設定されている場合は、アクセスを拒否します。
  • 7行目:IPアドレス 111.222.111.222 からのアクセスなら拒否します。
一時期、悪名高かった百度(baidu)の拒否パターンです。
最近は、ちゃんとrobots.txtに従うみたいですが、以前は、めちゃくちゃで、百度だけでかなりのCPU負荷を上げてしまうぐらいでした。
そのため、設定例が残っていたので、例として使わせてもらいました。
百度(baidu)さん、

Nginxでのdeny(アクセス拒否 : 403 )の例

先のApacheでの例を nginxで実現するには、以下のように設定ファイル(/etc/nginx/nginx.conf)を編集します。

server {
    server_name www.example.com;
    ...
    set $deny_f 0;
    if ( $http_user_agent ~* 'baidu' ){
        set $deny_f 1;
    }
    if ( $http_referer ~* '^http://www\.baidu\.jp' ){
        set $deny_f 1;
    }
         :
    if ( $remote_addr = '111.222.111.222'  ){
        set $deny_f 1;
    }
    if ( $deny_f = 1) {
        return 403;
    }
    ...
}

この色の箇所が、編集箇所でdeny(アクセス拒否 : 403 )を実施している箇所になります。

if文の判定に使われている~* は、
大文字小文字を区別しないで一致するものという意味ですから、
上記のapacheの設定と対比させてば、よく理解できると思います。

if文での判定記号には以下の3つがあります。

~ :右辺の文字列が左辺に含まれるか比較します。
~* : 大文字小文字を区別しないで、右辺の文字列が左辺に含まれるか比較します。
= :左辺と右辺が全く同じか比較します。

if文は、必ず、括弧(の前にブランク(半角空白)を入れるようしましょう。
if( xxxx = YYYY ) のようにifの後にブランク(半角空白)を入れないと構文エラーでうまく読み込んでしてくれないようです。

x if( xxxx = YYYY )
o if ( xxxx = YYYY )

if文は、
server, locationの内でしか使えません。

最後の

return 403;

HTTP ステータス番号 403の発行して終了するという意味になります。

もちろん、403でなく例えば404(ページなし)を設定することもできます。

このようにnginxでも同じようにdeny(アクセス拒否 : 403 )ができます。

if文の条件で、serverの設定情報の内でしか使えませんから、 全てのサーバーで共通てきなリダイレクト処理を行いたい場合などは、 1つのファイルにまとめて各サーバーでinclude文を挿入することになるのだと思います。

apacheの、.htaccessの書き方より、プログラミングっぽいですね。
個人的には、nginxがすっきりしていて好きですが、どうでしょうか?
ご利用のブラウザは、広告ブロック(AdBlockなど) が適用となっていませんか?
このサイトでは、コンテンツの一部が非表示、あるいは、コメント、お問い合わせの投稿ができない検索ができないことがあります。


関連記事 :

.htaccessで特定のホストからのアクセスを拒否する(2)

今回は、「.htaccessで特定のホストからのアクセスを拒否する」の続きです。 ここでの話は、FreeBSDもCentOSも関係なく、a ...

Nginx でリダイレクト ( rewrite ) するには

ここまでで、nginx + php-fpm上でWordpressを動作するところまで解説してきました。 CentOS / Sci ...

.htaccessで特定のホストからのアクセスを拒否する

今回は、apacheのアクセス規制です。 ここでの話は、FreeBSDもCentOSも関係なく、apacheの設定です。 一般的に、リダ ...

Nginx でIPアドレスを使って国を判断する(geo を使ってみる)、おまけで携帯キャリアを判定して携帯サイトへ転送させてみる

Nginxには、geo ディレクティブというものがあります。 これは、クライアントのIPアドレスから、何かしら判断した結果を変数として格納する ...

.htaccessで外部からの画像ファイルアクセスを拒否する

今回は、「.htaccessで特定のホストからのアクセスを拒否する(2)」の続きです。 ここでの話は、FreeBSDもCentOSも関係な ...



コメントを投稿 :

お名前 *

メールアドレス *
( メールアドレスが公開されることはありません。)

サイトアドレス

コメント *

* 印の項目は、入力が必要な項目です。




最近投稿の記事

[ 画像提供元 : Amazon ] 先日、1TBのディスクの入れ替え時にバックアップをとろうとディスクコピーを行いました。 その際 ...

Windows で Linux ファイルシステム Ext4 のディスクをマウントするには? Ext3Fsd が、おそらく、最も簡単なツール ...

今回は、Windows で Compass を使ってみました。 Compass とは、 Sass(サス、Syntactica ...

今回は、Anti Adblock を使ってみました。 Anti Adblock とは、 そもそも Adblock という ウェブ ...

デスクトップ環境でない サーバーで、Webページのキャプチャー画像をコマンドで撮る には、wkhtmltoimage, CutyCapt ...


さくらのVPS 全プラン リニューアルです。(石狩(北海道)も選択可)


root権限ありで ¥685 / 月 ~ と非常にリーズナブルな CPU 1(core)の 512 プランから、 最高 CPU 10(core), メモリ 32(GB), SSD容量 800(GB) までとプランが充実。
ディスクは、SSDとHDDの選択が可能になった他、データセンターは人気の東京、石狩(北海道)となりました。

また、どのプランでも好きなOSが選べます
( CentOS, Fedora, Scientific Linux, FreeBSD, Ubutu, Debian )

管理人もおすすめのVPSです。
試用期間がありますから、一度、お試しを!!

詳しくは、http://vps.sakura.ad.jp/さくらのVPSのサイトへ へどうぞ!!

カテゴリ


Serverman@VPS 完全1ヶ月無料 キャンペーン実施中です。


Serverman@VPS 完全1ヶ月無料 キャンペーン実施中です。
最近、スワップにも対応した Serverman@VPS は、かなりリーズナブルかもです。

  • メモリ1GB~2GBのEntryプラン :月額:490円
  • メモリ2MB~4GBのStandardプラン :月額:980円
  • メモリ4GB~8GBのProプラン :月額:1,980円

新規申し込みで1ヶ月間完全無料となるキャンペーンを実施中です。
Serverman@VPSの特徴は、安さとIPv6対応です。また、初期設定費0円もポイントです。

IPv6でちょっと遊んでみたい方には、おすすめかもしれませんね。最低利用期間もありませんから、気に入らないときは即解約もできます。

Serverman@VPSの詳細については、 http://dream.jp/vps/ Serverman@VPSのサイトへへどうぞ。



KVM採用 ConoHa VPSは、時間単位で借りれる便利なVPSです。


ConoHa VPS は、初期設定費0円最低利用期間無し時間単位で清算可能、 さらに、Web APIを使って自動化を図ることもできる便利なVPSです。

海外サーバー設置も可能で、ローカル接続にも対応と、かなり、機能豊富なサーバーです。

新規ユーザ登録で、クーポンもらえますから、まずは、お試しですね。

ConoHa VPSの詳細については、
http://www.conoha.jp/ へどうぞ。

KVM採用 お名前.com VPS(KVM) 2G プラン 初期設定費無料 キャンペーン 実施です。


メモリ2GBプラン CPU:3core、Disk:200GB
月額:1,153円から (初期設定:1,680円0円)

さくらのVPSがリニューアルされてもなんのその。
1GBメモリ / 2Core を ¥834 – の格安価格で提供中です!
間違いなくスペックからすると割安感ありです。
年間割引時の途中解約で返金がないのは、 ちょっと残念ですが、それでもこの割安感は魅力です。

まずは、お試しですね。

お名前.com VPS(KVM)の詳細については、
http://www.onamae-server.com/vps/ へどうぞ。(お試し期間が15日あります。)



  • ソーシャルブックマーク

  • はてなブックマークへ追加するはてな登録数
ページトップへ
Time : 0.2320 [s]