ここがこれを投稿するのに適切な場所であることを願います。
複数のサイトをホストする CentOS 6 VPS があります。現在、3 つのサイトが問題なく稼働していますが、4 つ目のサイトを追加しようとしており、URL (nginxFail.com と呼びます) にアクセスすると常に「Welcome to nginx on Fedora!」というウェルカム ページが表示されます。
/home/nginxFail/www に test.txt ファイルを置いて、nginxFail.com/test.txt にアクセスしようとしました。403 が返されました。nginxFail.com/nosuchfile.txt と nginxFail.com/nosuchdir でも 403 が返されました。
すでに試したこと:
- ドメイン情報の確認: 新しいドメインと他の 3 つのドメインのドメイン情報は、SPF 情報を含めてまったく同じです。新しいドメインが伝播するのに約 5 日かかりました。
- httpd.conf の検証: 以下が私の持っている内容です:
<VirtualHost *:80>
DocumentRoot /home/**nginxFail**/www
ServerName **nginxFail.com**
ServerName **<my server IP>**
ErrorLog /var/log/httpd/**<errorLog>**
CustomLog /var/log/httpd/access_log combined
<Directory "/home/**nginxFail**/www">
Options +Indexes FollowSymLinks +ExecCGI
Order allow,deny
allow from all
</Directory>
</VirtualHost>
もちろん、太字のエントリは実際の情報に設定されています。これは、他の 3 つのサイトを機能させるこのファイル内の他のエントリとまったく同じ設定です。
以下は、要約した /etc/nginx/nginx/conf です。
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log;
#error_log /var/log/nginx/error.log notice;
#error_log /var/log/nginx/error.log info;
pid /var/run/nginx.pid;
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
# Load config files from the /etc/nginx/conf.d directory
include /etc/nginx/conf.d/*.conf;
#
# The default server
#
server {
listen 80;
server_name _;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 404 /404.html;
location = /404.html {
root /usr/share/nginx/html;
}
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
}
- サーバー (および /etc/init.d/httpd) を再起動します。うまくいきませんでした。
- 別のマシンを試す: nginx の問題はウイルスまたはホスト ファイルが原因である可能性があると読んだことがあります。私のマシンは常にクリーンです (ウイルス スキャンを定期的に実行し、ブラウザーで実行されるエラー スキャンは信頼していません、ハハ)。また、ホスト ファイルもクリーンなようです。興味本位で別のコンピューターや携帯電話でサイトにアクセスしてみましたが、同じ nginx ページが表示されました。
-Google: 失敗しました! :o、これがブラウザのクリーニング機能について知ったきっかけです。
- 権限の確認: 私のサーバーでは、すべてのサイトが /home/ ディレクトリ内の独自のフォルダーにリストされています。新しいサイト エントリもここに配置します。前述のように、他の 3 つのサイトは正常に動作しているため、/home/ の権限の問題ではありません。また、home/nginxFail/www には 755 が設定されていることを確認しました (他の動作中のサイトと同様)。
- /etc/nginx/ ディレクトリを確認すると、sites-enabled ディレクトリがないことに気が付きました。別の質問でこれが原因である可能性があると見ましたが、そうだとしたら、他の 3 つの Web サイトが正常に動作しているのはなぜでしょうか?
- ログを確認する: Web サーバーが HTTP 要求を受信して 403 をスローしているという確認以外、var/log には何も見つかりませんでした。上記の test.txt ファイルにアクセスした後、どのファイルを調べるべきかを確認するために、ログ ディレクトリで mod 日付の変更を確認しました。
- サイトに口頭で nginx の表示をやめて自分のサイトを表示するように伝えましたが、うまくいきませんでした。
- /etc/nginx を調べてみると、そこには sites-available ディレクトリがあり、それが役に立つはずだと読んだのですが、root としてログインしても表示されません。
ここでちょっと困惑しています。
編集: この問題についてさらに調査したところ、Apache と nginx の奇妙な競合が原因のようです。
このサイトは Apache 2.2.23 を実行しており、おそらく誤って nginx もインストールされているようです。 表示される 403 ページは Apache が起動したことを示していますが、ドメイン自体にアクセスすると、何らかの理由で nginx に切り替わります。 で nginx を停止するのが自然な考えでした/etc/init.d/nginx -s stop
。 それを実行して nginxfail.com に戻ると、nginx ページがまだ表示されます。 すると、ps -ef | grep nginx
停止した後でも nginx プロセスが実行中であることがわかります。私の知る限り、サーバー上に自動的に再起動するスクリプトはないはずです。
ここで興味深いのは、私がこれを実行すると/etc/init.d/httpd stop
、nginxfail.com と他の 3 つの動作中のサイトを含む 4 つのサイトすべてが停止し、httpd をオンに戻すと、最初の投稿と同じ状況が発生することです。
/etc/httpd/error_log を確認すると、「Client denied by server configuration: /home/nginxfolder/www/」というエラーが表示され、権限を確認したので、Web サーバー (この場合は Apache だと思います) は正しい場所を探しているようです。
これが漠然としていて、私の設定をうまく説明していない場合は申し訳ありません。他に役立つ具体的な情報はありますか?