我安装了apache2和nginx作为web服务器,
发现很奇怪,service apache2 stop
运行的时候在firefox中还是会显示apache2的logo,而运行的时候在firefox中却无法显示nginx的logo service nginx start
。
无论您停止 apache2 还是启动 nginx,apache2 debian 默认页面始终显示在我的 Firefox 中。
apache2的配置文件/etc/apache2/sites-available/000-default.conf如下:
<VirtualHost *:8080>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
nginx的配置文件/etc/nginx/sites-available/default如下:
server {
listen 8080;
server_name 127.0.0.1;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
location / {
try_files $uri $uri/ =404;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/html;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
在我的操作系统中,
ls /var/www/html
index.nginx-debian.html index.html
index.html 是 apache2 debian 的标志,每次执行 127.0.0.1:8080 时,不管是 apache2 还是 nginx,都会调用 index.html,显示 apache2 debian 的标志。
问题解决了。
答案1
这里确实有两个问题,所以我将尽力回答它们:
1.为什么Apache与Nginx显示的网页是一样的?
仔细查看你的配置文件。你会发现它们都加载了相同的内容:
Apache 正在加载(文档根目录):/var/www/html
Nginx 正在加载(root):/var/www/html;
这意味着两个服务器将显示相同的内容,因为它们正在加载相同的文件。您可以通过编辑配置文件将“根”目录更改为两个不同的位置。
例如阿帕奇:
<VirtualHost *:8080>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/apache
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
例如nginx:
server {
listen 8080;
server_name 127.0.0.1;
root /var/www/html/nginx;
index index.php index.html index.htm index.nginx-debian.html;
location / {
try_files $uri $uri/ =404;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/html/nginx;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
然后您需要创建每个目录并在其中放置一个文件:
mkdir /var/www/html/nginx
mkdir /var/www/html/apache
并将内容放入每个文件夹中。还值得检查每个文件夹的权限是否适合 Web 服务器访问它们。
2.如何检查 Apache 是否已停止且 Nginx 是否已启动
有一个简单的方法来检查每个服务的状态。假设您以 root 身份登录:
service apache2 stop #Stop apache
service apache2 status #is apache still running?
也可以使用ps命令来获取进程列表:
ps aux | grep -i apache
这可以有效地获取所有正在运行的进程,并搜索名为 apache 的任何进程。
然后您可以启动 nginx 并检查它是否正在运行:
service nginx start #start nginx
service nginx status #is nginx running?
(可选另一种方法来证明进程正在运行):ps aux | grep -i nginx
还可以查看哪个程序正在监听哪个端口:
netstat -ntlp
这将告诉您计算机上监听连接的所有程序的本地地址、端口和进程名称。您应该在此列表中看到 nginx 或 apache 正在运行,并且端口 8080(根据您的配置文件)已公开。
答案2
您正在使用相同的 Web 文件基本路径(/var/www/html
),这就是使用 nginx 或 apache 时显示相同内容的原因。
了解谁在响应请求的最简单方法是查看响应标头:
curl -I 127.0.0.1
查看前面出现的内容Server
。
Network
这也可以通过 Web 浏览器的开发者控制台中的或选项卡来完成Networking
,在响应标头中查找“服务器”的值。
答案3
可能会出现这样的情况,即你的 Apache 服务已停止,但即便如此,你看到的也是/var/www/html目录作为根目录和 apache 网页。这是因为 nginx 中的目录 -/etc/nginx/sites-enabled/(由启用的虚拟托管服务器组成)和/etc/nginx/站点可用/(由可用的虚拟托管服务器组成)。一个选项是删除/清理这些带有配置文件的目录,另一个选项是仅注释掉/etc/nginx/nginx.conf
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
############Comment out the following line############
#include /etc/nginx/sites-enabled/*;
############Comment out the following line############
然后检查以下内容:
Nginx 配置测试
sudo service nginx configtest
- 测试 nginx 配置 [ 确定 ]
或者
sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
重启 Nginx 服务
sudo service nginx restart
- 重新启动 nginx nginx [确定]
Nginx 服务状态
sudo service nginx status
- nginx 正在运行