我使用的是 Debian,最新的 dotdeb nginx-lite。我读到,server
如果域没有特定的服务器部分,则 nginx 找到的第一个部分将用作后备/默认部分。
我从我的安装中删除了sites-available
,因为我对一切与 http 相关的内容sites-enabled
使用了专用的挂载。/www
我/etc/nginx/nginx.conf
有这些行,包括其他配置:
include /www/conf.d/nginx/default.conf;
include /etc/nginx/conf.d/*.conf;
include /www/conf.d/nginx/*;
default.conf 如下所示:
server {
server_name 0.0.0.0;
listen 0.0.0.0:80;
rewrite ^ http://mymaintarget.com permanent;
}
这对我来说不起作用。我仍然收到此警告:
Restarting nginx: nginxnginx: [warn] conflicting
server name "0.0.0.0" on 0.0.0.0:80, ignored
我很确定没有其他服务器部分,并且 default.conf 是第一个包含/使用的。
有人知道哪里出了问题或者配置默认服务器的正确方法是什么?
更新完整配置文件:
nginx.conf:
user www-data;
worker_processes 8;
pid /run/nginx.pid;
events {
worker_connections 768;
}
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 10;
types_hash_max_size 2048;
server_tokens off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
error_log /var/log/nginx/error.log;
gzip on;
gzip_disable "msie6";
gzip_vary on;
# Default VirtualHost
include /www/conf.d/nginx/default.conf;
# conf.d is empty anyways
#include /etc/nginx/conf.d/*.conf;
# VirtualHosts
include /www/conf.d/nginx/*;
}
默认.conf:
server {
listen 80 default_server;
rewrite ^ http://blog.flowl.info permanent;
}
答案1
要设置默认服务器:
server {
listen 80 default_server;
rewrite ^ http://mymaintarget.com$request_uri? permanent;
}
default_server 参数将包括任何其他域、ip 等
更多信息nginx
答案2
# Default VirtualHost
include /www/conf.d/nginx/default.conf;
# conf.d is empty anyways
#include /etc/nginx/conf.d/*.conf;
# VirtualHosts
include /www/conf.d/nginx/*;
“default.conf” 被包含,然后被包含再次在/www/conf.d/nginx/*
我删除了第一个包含,并将“default.conf”重命名为“_default.conf”,因此该文件是第一个包含在通配符包含中的文件。