我在 Debian 服务器上安装了 nginx。我有三台服务器(虚拟主机):
- 默认(/etc/nginx/sites-enabled/0-default)
- mydomain.com (/etc/nginx/sites-enabled/1-mydomain)
- booking.mydomain.com (/etc/nginx/sites-enabled/2-booking)
当我用域名访问服务器时,我得到了正确的网站。但是当我用 IP 地址访问服务器时,返回的是预订网站。
该预订网站在 Symfony 上,以下是 sites-enabled/2-booking 文件的内容:
server {
server_name booking.mydomain.com;
root /var/www/booking/web;
location / {
# try to serve file directly, fallback to app.php
try_files $uri /app.php$is_args$args;
limit_req zone=one burst=20;
}
location ~ ^/(app|app_dev|config)\.php(/|$) {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTPS off;
}
error_log /var/log/nginx/booking_error.log;
access_log /var/log/nginx/booking_access.log;
}
我希望我的服务器在从其 IP 地址访问时返回 /var/www/index.php 文件,您知道该怎么做吗?
答案1
要明确设置默认服务器,您可以在 中添加default_server
指令listen
。/etc/nginx/sites-enabled/0-default
这样该参数就变成。
listen *:80 default_server;
摘录自nginx 如何处理请求
在此配置中,nginx 仅测试请求的标头字段“Host”,以确定应将请求路由到哪个服务器。如果其值与任何服务器名称都不匹配,或者请求根本不包含此标头字段,则 nginx 会将请求路由到此端口的默认服务器。在上述配置中,默认服务器是第一个服务器 — 这是 nginx 的标准默认行为。还可以使用 listen 指令中的 default_server 参数明确设置哪个服务器应为默认服务器