nginx和monit的Web界面 - 如何在domain.com/monit上使用monit,而不是domain.com。

3

我正在我的EC2实例上使用Monit,而且我对Nginx不太熟悉。以下是我的Nginx配置文件:

server {
  listen 80;
  server_name 127.0.0.1;
  location / {
    proxy_pass 127.0.0.1:2812;
    proxy_set_header Host $host;
  }
}

如果我访问domain.com,我会看到monit。如何修改上述代码,使我能在domain.com/monit上看到monit?

谢谢

3个回答

10
请尝试这个:
server {
  listen 80;
  server_name 127.0.0.1;

  location /monit/ {
    proxy_pass http://127.0.0.1:2812;
    proxy_set_header Host $host;
  }

}

在这里了解有关 Nginx 中指令 location 工作方式的更多信息。


我应该创建目录 /usr/local/nginx/html/monit 吗? - user959129
如果我在运行/etc/init.d/nginx时没有添加dir,那么会出现以下错误:Starting nginx: nginx: [emerg] invalid URL prefix in /usr/local/nginx/conf/nginx.conf:61 - user959129
只有在proxy_pass的URI中加上一个尾部向前斜杠(/),才能让代码正常运行,像这样: proxy_pass http://127.0.0.1:2812/; - RyanScottLewis
@DimitrySandalov的回答也应该包含在这个答案中。 - Jeremie
然而,如果monit设置为保持nginx运行,则这似乎很奇怪。 - GorillaApe

4

Monit的wiki上有一篇关于如何配置它与Nginx配合使用的文章。

这是我的/etc/nginx/conf.d/monit.conf文件:

server {
    listen   80;
    server_name  my.server.name;

    location /monit/ {
            allow 127.0.0.1;
            allow 192.0.0.0/8;
            deny all;

            proxy_pass http://127.0.0.1:2812;
            proxy_set_header Host $host;
            rewrite ^/monit/(.*) /$1 break;
            proxy_ignore_client_abort on;
    }
}

1

Sergei已经正确回答了你的直接问题。我认为值得注意的是,这可能更干净,只需使用子域:

server {
  listen 80;
  server_name monit.domain.com;
  location / {
    proxy_pass 127.0.0.1:2812;
    proxy_set_header Host $host;
  }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接