当前位置:首页 > 技术文章 > 正文内容

nginx配置基于域名转发到内网IP不同端口

arlanguage3个月前 (01-24)技术文章22

网站服务器上运行Nginx,通过基于域名的请求转发到不同的内网IP地址和端口,可以有效地管理和分配流量。以下是详细的配置步骤和说明,帮助你实现这一目标。


1. 安装 Nginx ?

首先,确保你的服务器已经安装了Nginx。如果尚未安装,可以使用以下命令进行安装:

sudo apt update
sudo apt install nginx

解释:

  • sudo apt update:更新软件包列表,确保安装的是最新版本。
  • sudo apt install nginx:安装Nginx服务器。

2. 编辑 Nginx 配置文件 ??

Nginx的默认配置文件通常位于
/etc/nginx/sites-available/default。使用你喜欢的文本编辑器(如vim或nano)打开该文件:

sudo nano /etc/nginx/sites-available/default

解释:

  • sudo:以超级用户权限运行命令。
  • nano:简单易用的文本编辑器,用于编辑配置文件。

3. 配置基于域名的服务器块 ?

在配置文件中,添加两个server块,分别处理example1.com和example2.com的请求:

server {
    listen 80;
    server_name example1.com;

    location / {
        proxy_pass http://内网IP1:端口号;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

server {
    listen 80;
    server_name example2.com;

    location / {
        proxy_pass http://内网IP2:端口号;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

解释:

  • server { ... }:定义一个虚拟主机,用于处理特定域名的请求。
  • listen 80;:监听80端口(HTTP默认端口)。
  • server_name example1.com;:指定要处理的域名。
  • location / { ... }:定义根路径下的请求处理规则。
  • proxy_pass http://内网IP1:端口号;:将请求转发到指定的内网IP和端口。
  • proxy_set_header Host $host;:传递原始的Host头信息,确保内网服务器知道请求的域名。
  • proxy_set_header X-Real-IP $remote_addr;:传递客户端的真实IP地址,便于内网服务器进行日志记录和访问控制。

4. 替换内网IP和端口号

确保将配置中的内网IP1、内网IP2和端口号替换为实际的内网服务器IP地址和相应的端口。例如:

server {
    listen 80;
    server_name example1.com;

    location / {
        proxy_pass http://192.168.1.10:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

server {
    listen 80;
    server_name example2.com;

    location / {
        proxy_pass http://192.168.1.20:9090;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

解释:

  • 192.168.1.10:8080:将example1.com的请求转发到内网IP 192.168.1.10 的8080端口。
  • 192.168.1.20:9090:将example2.com的请求转发到内网IP 192.168.1.20 的9090端口。

5. 测试 Nginx 配置 ?

在应用配置之前,务必检查配置文件是否存在语法错误:

sudo nginx -t

解释:

  • sudo nginx -t:测试Nginx配置文件的语法是否正确。如果有错误,命令行会显示相关的错误信息,帮助你进行修正。

6. 重新加载 Nginx 服务

如果配置文件通过了测试,重新加载Nginx以应用新的配置:

sudo systemctl reload nginx

解释:

  • sudo systemctl reload nginx:重新加载Nginx服务,使新的配置生效,而无需完全重启服务。

7. 确认转发效果 ?♂?

确保域名已正确解析到Nginx服务器的IP地址。可以通过访问example1.com和example2.com,检查是否分别转发到指定的内网服务器。

常见问题排查:

  • 域名解析错误:确保DNS记录正确指向Nginx服务器。
  • 防火墙设置:确保服务器的防火墙允许80端口的流量,并且内网服务器的端口开放。
  • Nginx日志:查看Nginx的访问日志和错误日志(通常位于 /var/log/nginx/),帮助诊断问题。

8. 增强安全性

为了提高安全性,建议配置HTTPS,使用SSL证书加密流量。可以通过Let's Encrypt免费获取SSL证书,并使用Nginx的ssl模块进行配置。

示例配置:

server {
    listen 443 ssl;
    server_name example1.com;

    ssl_certificate /etc/letsencrypt/live/example1.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example1.com/privkey.pem;

    location / {
        proxy_pass http://192.168.1.10:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

server {
    listen 443 ssl;
    server_name example2.com;

    ssl_certificate /etc/letsencrypt/live/example2.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example2.com/privkey.pem;

    location / {
        proxy_pass http://192.168.1.20:9090;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

解释:

  • listen 443 ssl;:监听443端口,并启用SSL。
  • ssl_certificate 和 ssl_certificate_key:指定SSL证书和私钥的路径。
  • 通过HTTPS加密传输,确保数据的安全性和完整性。

总结

通过以上步骤,你已经成功配置了Nginx,实现了基于域名请求转发,将不同域名的访问请求代理到相应的内网服务器。这不仅优化了流量管理,还增强了服务器的安全性和可维护性。记得定期检查和更新配置,确保服务器的稳定运行。

如果在配置过程中遇到问题,参考Nginx的官方文档或社区资源,可以获得更多的帮助和支持。


希望这份指南对你有所帮助!如果有任何疑问,欢迎进一步讨论。

扫描二维码推送至手机访问。

版权声明:本文由AR编程网发布,如需转载请注明出处。

本文链接:http://www.arlanguage.com/post/1088.html

分享给朋友:

“nginx配置基于域名转发到内网IP不同端口” 的相关文章

Nginx完全指南--内容解析(七)

实现高性能负载均衡的进阶实操指南经典书籍《NGINX 完全指南》中文版全新再版这本由 O'Reilly 出版的电子书涵盖了最新的 NGINX 操作指南和使用技巧,是 NGINX 学习及实操的必备指南。新版不仅扩充更新了已有章节,还添加了不少前沿的热门话题。本书是由中文官方网站推荐,免费下载的...

Nginx 负载均衡配置教程以及 upstream 详解

一、通用配置在 Nginx 中配置负载均衡非常简单。通过定义一个 upstream 块,你可以指定多个后端服务器用于负载均衡。下面是一个基本的例子:http { upstream myapp { server backend1.example.com;...

haproxy负载均衡入门到转行

haproxy概述haproxy是一款开源的高性能的反向代理或者说是负载均衡服务软件之一,支持双机热备,虚拟主机基于TCP/HTTP应用代理,具有图形界面等功能。其配置简单,而且拥有很好的对服务器节点的健康检查功能(相当于keepalived健康检查),当其代理的后端服务器出现故障时,haproxy...

在 Ubuntu 或 Debian 系统上安装以及配置 nginx-1.20.1.tar.gz

安装和配置 Nginx 的步骤如下:下载 Nginx:1、首先,你需要从 Nginx 的官方网站下载源代码包。在你的服务器上执行以下命令,下载 Nginx 1.20.1 版本的源代码包:wget http://nginx.org/download/nginx-1.20.1.tar.gz2、解压源代码...

Nginx如何实现四层负载均衡

静态负载均衡Nginx的四层静态负载均衡需要启用ngx_stream_core_module模块,默认情况下,ngx_stream_core_module是没有启用的,需要在安装Nginx时,添加--with-stream配置参数启用,如下所示。./configure --prefix=/usr/l...

Linux下如何用nginx+ffmpeg搭建流媒体服务器

安装ffmpeg安装过程略安装完成后,检查是否安装成功。比如我这里采用向pili推流的方式,将本地的一个mp4视频推流到七牛pili。ffmpeg -re -i /tmp/ffmpeg_test.mp4 -vcodec copy -acodec copy -f flv "rtmp://pil...