0

現在、2 つのディレクトリに Web サイトを展開しようとしています。それに関する多くのドキュメントにもかかわらず、希望する動作を得ることができませんでした。これはウェブサイトのアーキテクチャです:

  • メインの Web サイト ページは /opt/www/mainsite/index.html に保存されます。
  • 2 番目の Web サイト (CodeIgniter を使用) は、/opt/www/apps/myapp/index.php に保存されます。

この動作を取得するようにnginxを構成したい:

  • http のすべてのリクエストは https にリダイレクトする必要があります
  • www.mydomain.com は /opt/www/mainsite/index.html を指す必要があります
  • www.mydomain.com/myapp は /opt/www/apps/myapp/index.php を指す必要があります

現在、私の設定ファイルには以下が含まれています:

# redirect http to https
server {
    listen 80;
    rewrite ^(.*) https://$host$1 permanent;
}

# main webiste
server {
    listen 443;

    # ssl elements...  
    root   /opt/www/mainsite;
    index index.html;
    server_name             www.mydomain.com;

    location / {
            try_files $uri $uri/ /index.html;
    }
}

このページでは、CodeIgniter の構成ファイルを設定するためのすべての情報を見つけました。しかし、CodeIgniter フォルダーで mydomain.com/myapp を指すルールを作成する方法と、適切な構成を設定するために CodeIgniter を構成する方法がわかりません。

誰でも私を助けることができますか?

前もって感謝します

4

2 に答える 2

4
  • CodeIgniter をセットアップするにはhttp://wiki.nginx.org/HttpFastcgiModuleが必要です。
  • 2 つのサーバー ブロックを使用すると、リダイレクトに if ブロックを使用するよりも優れています。IF is Evilを参照してください。
  • $host は使用しないでください。変数の値はリクエストの HOST ヘッダーから取得され、簡単に偽装できるからです。常に server_name ディレクティブを設定し、代わりにその名前を使用してください。
  • 「return 301」ディレクティブを使用することは、書き換えよりも優れています。CPU時間を節約し(正規表現は遅い)、従うのも簡単です。302 リダイレクト (rewrite...redirect) には副作用があることに注意してください。これは、302 がすべての POST リクエストを GET リクエストに変換するためです。これはあなたの場合には良くありません。
  • メイン サイトは静的ファイルを提供するだけなので、メイン サイトに try_files は必要ありません。ただし、「expires」ディレクティブを使用して、ブラウザーが静的ファイルをキャッシュできるようにすることができます。
server {
    listen 80;
    server_name www.mydomain.com;
    return 301 https://$server_name$request_uri;
 }

 server {
    listen 443;
    server_name www.mydomain.com;
    # ssl elements...  

    location / {
        root   /opt/www/mainsite;
        index index.html;
        expires max;
    }

    location /myapp {
        root /opt/www/apps/myapp;
        # fastcgi module goes here...
    }
}
于 2013-03-23T23:43:36.413 に答える
0
server {
    listen 80;
    listen 443 ssl;
    …
    if ($scheme != "https") {
        rewrite ^ https://$server_name$request_uri? redirect;
    }
    root /opt/www/mainsite/;
    location /myapp {
        root /opt/www/apps/myapp/;
    }
}

formyapp内に必要な構成を配置します。locationmyapp

Hostところで、 XSSの懸念があるため、1つの中で複数の独立したアプリをホストすることは一般的に悪い考えです。

于 2013-03-23T20:17:05.930 に答える