11
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

nginxでlocalhostとそれ以外のドメインからのアクセスでDocumentRootを分ける

Posted at

外からのドメイン名(ec2-xx-xx-xx-xx.ap-northeast-1.compute.amazonaws.com)を指定した場合とサーバー内部からのlocalhostによる実行の際にDocumentRootを分けることをやってみたのでメモ。

やりたいこと

  • 外からのドメイン名(ec2-xx-xx-xx-xx.ap-northeast-1.compute.amazonaws.com)を指定した場合にはAというDocumentRootとする
  • localhostからの接続の場合にはBというDocumentRootとする

結論

  • serverディレクティブにserver_nameもしくはlisten(もしくはその両方)を記載することでDocumentRootを変えることが出来る
  • localhsotからの接続はlisten 127.0.0.1というようにせってていすれば良い

準備

適当にEC2を起動する。PublicDNSが設定されてインターネット越しにアクセスできるものとする。

以下でnginxをインストールし、起動

$sudo yum install nginx -y
$sudo service nginx start

また、色々面倒なのでhttpdをインストールして、もう一つDocumentRootを作成し、ファイルも置いておく。

$sudo yum install httpd
$sudo echo "hello" | sudo tee /var/www/html/index.html

やってみる

設定ファイルで以下を変更します。

  • EC2でデフォルトで当てられるホスト名は長いため、server_names_hash_bucket_sizeを128に変更(設定しないとエラーになります)
  • 1つ目のserverディレクティブでlocalhost(127.0.0.1)からの80ポートでのアクセス時に適用されるVirtualHostの設定を行う。こちらではDocumentRootとしてnginxデフォルトの/usr/share/nginx/htmlとする
  • 2つ目のserverディレクティブでec2-xx-xx-xx-xx.ap-northeast-1.compute.amazonaws.comの80ポートでのアクセス時に適用されるVirtualHost設定を行う。こちらではDocumentRootとしてhttpdデフォルトのDocumentrootの/var/www/html/とする
/etc/nginx/nginx.conf

http {
+ server_names_hash_bucket_size 128;

server {
- listen 80;
+ listen 127.0.0.1:80;
- server_name  localhost;
+ #server_name  localhost;
}

-    #server {
-    #    listen       8000;
-    #    listen       somename:8080;
-    #    server_name  somename  alias  another.alias;
-    #    root         html;
-    #    location / {
-    #    }
-    #}

+    server {
+        listen       80;
+        server_name  ec2-xx-xx-xx-xx.ap-northeast-1.compute.amazonaws.com;
+        root  /var/www/html;
+        location / {
+        }
+    }

nginxを起動します。

$sudo service nginx start

この状態でlocalhsotから接続するとnginxデフォルトDocumentRootのnginxの初期画面の情報が取得できます。

$curl http://localhost/

また、自身のPCからPublicDNSでブラウザからアクセスするとhelloとだけ表示されるHTMLが返却され、アクセス元でDocumentRootを分ける事ができました。

11
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?