我正在尝试在Ubuntu 13.04上使用nginx设置子域。我之前能够做到这一点:
server {
root /home/ajcrites/projects/site-a/public/;
server_name sub.localhost;
location / {
try_files $uri /index.php;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
#fastcgi_pass 127.0.0.1:9000;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}
然后http://sub.localhost
会完美运作。
现在,我已经复制了相同的配置,只是将root
(已存在的路径)和server_name
更改为其他值subber.localhost
。无论我做什么,我都无法让subber.localhost
工作。无论我做什么,当nginx运行时,我无法让sub.localhost
不工作。奇怪的是,nginx实际上会抱怨配置文件中的错误,但即使没有,也无关紧要。 只有 sub.localhost
才有效。
我尝试过以下所有方法,反复进行各种组合:
sites-available
中创建单独的文件。 nginx似乎存在,因为它会在我尝试重新加载时抱怨错误。service nginx stop && service nginx start
nginx stop; nginx
nginx -s reload
当我stop
时,pgrep
没有显示任何nginx
进程,因此它似乎正确停止了。这似乎不是缓存问题,因为新的浏览器实例以相同的方式做出反应。
答案 0 :(得分:2)
我碰巧遇到过类似的问题,每次都是一个简单的问题(虽然我花了很长时间才找到)。例如(对不起,如果有些观点是显而易见的 - 但有时候我们会关注困难,忽略显而易见的事情 - 至少这是我的情况)
sites-enabled
/
(至少x
)具有读访问权限
subber.localhost
在/etc/hosts
中为本地测试(或本地DNS)定义良好,也许您可以尝试强制 listen 正在侦听的IP。例如,而不是
listen 80
你可以尝试
listen 127.0.0.1:80; # OR
listen 192.168.0.1:80; # you local address (or remote if that's the case)