2

たとえば、私のドメインの下にexample.com、ランディング ページ ( を押すと表示されるexample.com)、WordPress ブログ ( にあるblog.example.com)、および HTML 形式の履歴書( にある) を作成したいと考えていますresume.example.com。nginx を使用して、3 つの個別の .conf ファイルを用意して、それらを個別に起動および停止できるようにします。DNS は、"resume" と "blog" が の A レコードになるように設定されていexample.comます。

これを Linode で実行しているので、DNS と Web サーバーを完全に制御できます。ただし、nginx の .conf エントリを別のファイルに分割しようとすると、Web ブラウザでこれを押すと からへblog.example.comのリダイレクトが発生します。blog.example.comwww.example.com

WordPress のインストールが問題ではないことはわかっています。3 つのサーバー エントリすべてが 1 つの nginx ファイルにある場合、すべてが正常に機能するからです。また、ブログ用に別のフォルダー構造を作成しようとしました ( blogs-availableand blogs-enabled)、それらのフォルダーをインクルードのnginx.conf に含めましsites-enabledたが、それもうまくいきませんでした。これにより、2 つの質問が残ります。

  1. これを機能させる方法について何か提案はありますか? 私のDNS設定が間違っている可能性があります。

  2. nginx は読み込み順序を気にしますか、それともあいまいですか? 後者の場合は、すべてを 1 つのサーバー ブロックに保持し、すべてを稼働させるか、すべて停止させます。

アップデート:

のnginx.conf example.com

# Blog (WordPress site - blog.example.com)
server {
  listen <ip-address>;
  server_name blog.example.com;
  root /www/blog.example.com/public_html/current;

  access_log /www/blog.example.com/logs/access.log;
  error_log /www/blog.example.com/logs/error.log;

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

  location ~ \.php$ {
    include /etc/nginx/fastcgi_params;
    fastcgi_param  SCRIPT_FILENAME  /www/blog.example.com/public_html/current/$fastcgi_script_name;

    if ($uri !~ "^/images/") {
      fastcgi_pass unix:/var/run/php-fastcgi/php-fastcgi.socket;
    }
    fastcgi_index index.php;
  }

  location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
    expires max;
    log_not_found off;
  }
}

# redirect example.com to www.example.com
server {
  listen <ip-address>;
  server_name example.com;
  rewrite ^(.*)$ $scheme://www.example.com$request_uri? permanent;
  break;
}

# static site - www.example.com
server {
  listen <ip-address>;
  server_name www.example.com;
  # static HTML / soon-to-be Sinatra site
  root /www/example.com/public_html/current/public;

  access_log /www/example.com/logs/access.log;
  error_log /www/example.com/logs/error.log;
}

resume.example.com注:上記のサイトはありませんが、それは些細なことです。また、上記は任意の順序で機能するため、リダイレクトの問題ではないと思います。

** 2 回目の更新 **

example.com直感で、 conf ファイルで次のようにコメントアウトしました。

server {
    listen <ip-address>:80;
        server_name example.com;
        rewrite ^(.*)$ $scheme://www.example.com$request_uri? permanent;
        break;
    }

そして、それは私が期待したように機能しました。上記の非 www -> www リダイレクト ルールに何か問題がありますか?

4

1 に答える 1

0

2 番目の質問では、nginx の構成は宣言的です。サーバーブロックの順序は関係ありません。そのため、各サーバー ブロックを独自の .conf ファイルで簡単に管理できます。

UPDATE nginx構成ファイルを見た後

nginx conf ファイルに問題は見つかりません。私のdevboxで試してみましたが、うまくいきました。したがって、DNSセットアップからのものである可能性があります。1 つの可能性として、「blog」を「www」の CNAME レコードとしてセットアップすることが考えられます (cname レコードはエイリアスです)。例えば、

blog   IN   CNAME   www

その場合、Web ブラウザーはhttp://blog.example.comhttp://www.example.comに送信します。

また、DNS レコードはブラウザ内または isp DNS サーバーにキャッシュされる可能性があることに注意してください。しばらく修正しても、間違ったレコードがキャッシュされる可能性があります。試す

dig blog.example.com

DNS セットアップの情報を取得します。

于 2013-04-01T22:14:13.550 に答える