Назад | Перейти на главную страницу

Как запустить datastax opscenter за nginx

Я хотел бы запустить datastax cassandra opscenter за Nginx. Но он продолжает добавлять порт opscenter (по умолчанию 8888) ко всем URL-адресам. Есть ли настройка конфигурации, чтобы отключить это или что-то в этом роде?

Вот моя супер-простая конфигурация nginx:

server {
  server_name opscenter.hostname.com;

  location / {
    proxy_pass http://127.0.0.1:8888;
  }
}

Может, я что-то делаю не так?

Решил это, добавив перенаправление nginx в / opscenter

location = / {
  rewrite (.*) /opscenter;
}

Вам необходимо создать местоположение, подобное следующему:

location / {
    proxy_pass http://127.0.0.1:8888;
    proxy_redirect http://localhost:8888/ /;
    proxy_redirect http://your.host.name:8888/ /;
    proxy_buffering off; 

}

В proxy_redirect линии лишат 8888 из ответов, возвращенных OpsCenter.

Подробнее о том, что proxy_redirect действительно можно найти на http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_redirect

Я пробовал предложенные конфигурации и многое другое, но ни одна из них не сработала.
Вот мой вариант использования и мое решение.

Мои серверы

Nginx и OpsCenter находятся на двух разных машинах. В отличие от Nginx, OpsCenter недоступен напрямую из Интернета.

Nginx 1.4.6 включен 172.132.1.2 (общедоступная сеть)
OpsCenter 5.2.0 включен 172.132.2.3 (частная сеть)

Конфигурация Nginx

upstream opscenter {
  server 172.132.2.3:8888;
}

server {
    listen 81 default_server;
    listen [::]:81 default_server ipv6only=on;

    location / {
         proxy_pass http://opscenter;
         proxy_redirect http://$proxy_host:8888/ http://$host:$server_port/;
         proxy_buffering off;
    }

    location ~ /\.ht {
        deny all;
    }
}