我希望这是发布此文的正确地方。
我有一个 CentOS 6 VPS,上面托管着多个网站。目前有三个网站运行良好,但现在我正尝试添加第四个网站,当我访问 URL(我们将其称为 nginxFail.com)时,总是会出现“欢迎使用 Fedora 上的 nginx!”欢迎页面。
我将 test.txt 文件放在 /home/nginxFail/www 中,并尝试访问 nginxFail.com/test.txt。它抛出了 403。nginxFail.com/nosuchfile.txt 和 nginxFail.com/nosuchdir 也抛出了 403。
我已经尝试过的:
-验证域名信息:新域名和其他三个域名上的域名信息完全相同,包括 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>
当然,粗体条目设置为我的实际信息。这与此文件中使其他三个站点正常运行的其他条目完全相同。
以下是精简的 /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/ 目录中的各自文件夹中。这也是我将新站点条目放入的位置。如前所述,其他三个站点运行正常,因此这不是 /home/ 的权限问题,并且我已确保 home/nginxFail/www 的权限为 755(与其他正常运行的站点一样)。
-查看 /etc/nginx/ 目录:我注意到没有 sites-enabled 目录。我在另一个问题中看到这可能是原因,但如果是这样的话,为什么其他 3 个网站可以正常工作?
-查看日志:除了确认 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
,所有 4 个网站都死机了,包括 nginxfail.com 和其他 3 个正常工作的网站,而当我重新打开 httpd 时,又会出现我的第一篇帖子中提到的相同情况。
我查看了 /etc/httpd/error_log,并收到错误“客户端被服务器配置拒绝:/home/nginxfolder/www/”,并且我验证了权限,因此 Web 服务器(在本例中我很确定是 Apache)似乎正在查找正确的位置。
抱歉,如果这不太清楚,无法很好地说明我的设置。还有其他具体信息可以提供帮助吗?