Указанный путь к местоположению на NGINX не работает - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть AWS EMR, и я пытаюсь настроить путь (/ hbase) для доступа к HBase в EMR через NGINX.Для достижения моей цели я создал файл конфигурации /etc/nginx/conf.d/hbase.conf.

 server {
 charset utf-8;
 listen  80;

 #Hbase works when location /hbase/ is replaced with location /.
 It does not work like below.
 location /hbase/
 {
   proxy_pass http://localhost:16010;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 }
}

Вот мой /etc/nginx/nginx.conf по EMR

#user  nobody;
worker_processes  1;
events {
    worker_connections  1024;
}
http {
  include       mime.types;
  default_type  application/octet-stream;
  include       /etc/nginx/conf.d/*.conf;
  log_format  main  '$remote_addr - [$time_local] "$request" '
                  '$status "$http_referer" '
                  '"$http_x_forwarded_for"';
  sendfile        on;
  keepalive_timeout  65;


# HTTPS server
server {
    listen 18888 ssl;
    ssl_certificate /etc/ssl/certs/nginx.crt;
    ssl_certificate_key /etc/ssl/certs/nginx.key;

    server_name localhost;

    location /webhdfs/v1/user {
      proxy_pass    http://localhost:14000;
      proxy_read_timeout 1800;
      proxy_connect_timeout 1800;
    }

    location /sessions {
      proxy_pass    http://localhost:8998;
      proxy_read_timeout 1800;
      proxy_connect_timeout 1800;
    }

    location /batches {
      proxy_pass    http://localhost:8998;
      proxy_read_timeout 1800;
      proxy_connect_timeout 1800;
    }
    location /proxy {
      proxy_pass    http://ip-10-100-0-4.ec2.internal:20888;
      proxy_read_timeout 1800;
      proxy_connect_timeout 1800;
    }
  } #end server tag
} #end http tag

Проблема в том, когда я нажимаю http://tempmyserverurl/hbaseэто дает мне 404 Not Found ошибку.Но когда я обновляю местоположение / hbase до / в моем hbase.conf, оно перенаправляется на master_status и пользовательский интерфейс HBase становится доступным.

Not found error

Working hbase.conf

Working HBase UI

Я просто хочу, чтобы NGINX загрузил HBase с location /hbase.Я пытался использовать другой сервер и упомянул прохождение прокси на этот сервер EMR, но он не работал.

Может кто-нибудь помочь мне в правильном направлении?Помогите мне разобраться, чего мне здесь не хватает.

Заранее спасибо.

1 Ответ

0 голосов
/ 26 сентября 2019

Учитывая

location /hbase
{
    proxy_pass http://localhost:16010;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

Запрос на http://example.com/hbase/some/path будет proxied на http://localhost:16010, как http://localhost:16010/hbase/some/path, который, скорее всего, не существует, поскольку hbase находится в URL, таким образом, 404ошибка.

С https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/

Если URI указан вместе с адресом, он заменяет часть запроса URI, соответствующую параметру location.

location /hbase
{
    proxy_pass http://localhost:16010/;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

В этом примере запрос к http://example.com/hbase/some/path будет proxied к http://localhost:16010, как http://localhost:16010/some/path, таким образом удаляя hbase из URL, который, скорее всего, устраняет проблему.

...