使用nginx 代理内网中的es的head插件访问

本文介绍如何通过Nginx正确配置反向代理,使Elasticsearch (ES) 的9200端口可以通过80端口访问,并解决因路径配置错误导致的访问问题。

一 背景需求描述

1.1 需求描述

es的访问地址:http://localhost:9200/_plugin/head/

 现在不想把9200端口暴露出去,改用80端口,现在使用nginx进行反向代理操作。

1.2 操作一

1.nginx的配置

       location /es {
            proxy_pass http://localhost:9200/;
            #root   html;
            #index  index.html index.htm;
        }

2.访问:http://localhost/es/_plugin/head/

 无法进行访问,原因在于:被nginx代理成的地址为:http://localhost:9200//

### 配置 Nginx 作为反向代理 为了实现通过 Nginx 访问内网中的其他网页,可以按照以下方式配置反向代理功能。这种设置允许外部用户通过 Nginx 的公网地址间接访问内部网络的服务。 #### 1. 安装 Nginx 如果尚未安装 Nginx,则可以通过包管理器完成安装: ```bash sudo apt update sudo apt install nginx ``` 确认 Nginx 已成功运行并监听默认端口 `80` 和 `443`[^1]。 --- #### 2. 修改 Nginx 配置文件 编辑 Nginx 的站点配置文件,通常位于 `/etc/nginx/sites-available/default` 或自定义的 `.conf` 文件中: ```nginx server { listen 80; server_name your-public-domain.com; location /internal/ { proxy_pass http://private-ip-of-target-server/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } ``` 上述配置解释如下: - **listen**: 指定 Nginx 监听的端口号。 - **server_name**: 设置对外公开的域名或 IP 地址。 - **location**: 定义路径前缀(如 `/internal/`),用于区分不同服务。 - **proxy_pass**: 将请求转发至目标内网服务器的实际地址和端口。 - **proxy_set_header**: 转发原始客户端信息给后端服务器,便于调试和日志记录[^3]。 保存修改后的配置文件,并测试语法是否正确: ```bash sudo nginx -t ``` 如果没有错误提示,重新加载 Nginx 配置: ```bash sudo systemctl reload nginx ``` --- #### 3. 使用 IP 哈希算法优化负载均衡 如果有多个内网服务器提供相同的服务,可启用 IP 哈希算法以确保来自同一用户的请求始终被路由到相同的后端实例。例如: ```nginx upstream internal_servers { ip_hash; server 192.168.1.10:8080; server 192.168.1.11:8080; } server { listen 80; server_name your-public-domain.com; location /internal/ { proxy_pass http://internal_servers/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } ``` 此配置利用了 `ip_hash` 功能,保证会话一致性。 --- #### 4. 启用 SSL 支持(可选) 对于更安全的通信环境,建议为反向代理添加 HTTPS 协议支持。以下是基本示例: ```nginx server { listen 443 ssl; server_name your-public-domain.com; ssl_certificate /path/to/certificate.crt; ssl_certificate_key /path/to/private.key; location /internal/ { proxy_pass http://private-ip-of-target-server/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } ``` 注意替换证书路径以及私钥位置[^4]。 --- ### 注意事项 - 确保防火墙已开放必要的端口(如 `80`, `443`)以便外网能够正常连接。 - 如果涉及敏感数据传输,请务必启用加密协议(HTTPS)保护流量安全性。 - 测试完成后验证反向代理的功能是否按预期工作。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值