*实际上*让nginx重新加载配置

时间:2013-06-11 05:19:30

标签: nginx

我正在尝试在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进程,因此它似乎正确停止了。这似乎不是缓存问题,因为新的浏览器实例以相同的方式做出反应。

1 个答案:

答案 0 :(得分:2)

我碰巧遇到过类似的问题,每次都是一个简单的问题(虽然我花了很长时间才找到)。例如(对不起,如果有些观点是显而易见的 - 但有时候我们会关注困难,忽略显而易见的事情 - 至少这是我的情况)

  • 确保sites-enabled
  • 中存在符号链接
  • root 路径对{em> nginx 用户
  • /(至少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)