シェアする

【Nginx】1ドメインでサブディレクトリに複数WEBサイトを展開する備忘録

nginx_logo

1ドメインで複数のサービス(WEBサイト)を展開するのにとても便利

しっかり設定しないと接続出来なかったりPHPに対して値の受け渡しが上手くいかなかったりしたので備忘録として残す(3日くらい悩んだ)

具体的にはAliasを利用するのだが少々癖があった

今回例として以下の設定とする

以下の通りルート配下にサブディレクトリが格納されている訳では無い事に注意

  • ドメイン:hogemp.com
  • ルート:http://hogemp.com/                         (HTMLのみ)
    ルートの絶対パス: /var/www/main
  • サブディレクトリ:http://hogemp.com/blog    (WordPressを想定)
    サブディレクトリの絶対パス: /var/www/blog
upstream phpfpm {
    #ここは環境によって違うので各自環境に合わせる
    server unix:/var/run/php5-fpm.sock;
}

server {
        listen 80 default_server;
	server_name  hogemp.com;
        #ルート用
	root         /var/www/main;
        #ルート用
        location / {
		try_files $uri $uri/ /index.html index.php;
        }
        #Wordpress用
        location /blog {
            alias   /var/www/blog;
            index  index.php;

            if (!-e $request_filename) {
                rewrite ^/blog(.+)$  /blog/index.php?q=$1 last;
                break;
            }
        }
        location ~ ^/blog/.+\.php$ {
            fastcgi_pass   phpfpm;
            fastcgi_index  index.php;
            fastcgi_split_path_info ^/blog(.+\.php)(.*)$;
            fastcgi_param  SCRIPT_FILENAME  /var/www/blog$fastcgi_script_name;
            fastcgi_intercept_errors on;
            include        fastcgi_params;
        }
 }

※注意点

実ディレクトリ名とAlias名を別にすると間違えやすいのでなるべく同名にする

別名であるのならばの部分がファイルパス(実ディレクトリ名) オレンジAlias名だ

WordPressのブロックの様に設定していけばPHPも動くサイトを複数展開できる

(WordPressのマルチサイト機能を使っても良いのだが、今回はWordpressでは無く全く別の物を公開したいのに便利)

スポンサーリンク

シェアする

フォローする

スポンサーリンク