nginx端口转发+域名映射

前段时间在Centos7下成功搭建了apache文件服务器 → 时光隧道

在这里插入图片描述

如上图,我只能通过IP+端口的方式来访问,现在我想提升一下逼格,通过自定义域名就可以访问,比如my.apache.com!说干就干!!!

1、端口转发
I、修改配置文件

目前我要访问文件服务器,需要输入IP+端口,如果不想输端口(默认80端口),就要做80端口转8000端口。
首先想到的是采用nginx做端口转发,可以通过在nginx.conf中添加配置(尽量不要改动里面的配置,出现错误很难察觉)

vi /usr/local/nginx/conf/nginx.conf

添加以下配置
在这里插入图片描述

然后在nginx.conf同级目录创建my.apache.conf,输入以下内容:

server {
    listen       80;
    server_name  my.apache.com;
    location / {
        proxy_pass http://localhost:8000;
    }
}
II、访问

现在我们尝试一下用自定义的域名访问
在这里插入图片描述
发现是访问不了的,此时我想到了本地域名映射!

2、域名映射
I、修改配置文件

打开本地hosts文件,文件路径为:

C:\Windows\System32\drivers\etc

在这里插入图片描述

II、访问

刷新页面,可以发现可以访问了

在这里插入图片描述
:试验证明,proxy_pass http://localhost:8000; 中host改为真实IP会报错
在这里插入图片描述
查看错误日志:

在这里插入图片描述
刚开始我就是写的真实IP,一直报这个。后来看到一位博友说localhost也不行,要改成127.0.0.1。于是把它改成127.0.0.1,没想到真的可以。我又试试改成localhost,事实证明也是可以的。

3、负载均衡
I、项目准备

此次演示负载均衡的项目很简单,就是一段获取本机地址的代码,如下:

@GetMapping("/host")
    public JsonData host(){
        try {
            InetAddress addr = InetAddress.getLocalHost();
            return JsonData.buildSuccess(addr.getHostAddress());
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
        return null;
    }
II、环境搭建

部署环境我是准备用三台机器(一台机器+两台docker搭建的环境),其中一台部署nginx,转发请求到另外两台部署了项目的机器。部署项目的机器地址分别是172.17.0.7和172.17.0.8。

III、配置文件

核心就是nginx的配置文件了,nginx.conf配置如下:
在这里插入图片描述
就只加了上图红框的配置,意思是引用其他的配置文件。我认为nginx.conf就应该这么配置,尽量不要去修改原配置,只需要引用外部配置文件就行了!
然后我们在/usr/local/nginxconf目录中添加 .conf 结尾的配置文件(前缀随意),内容如下:

upstream www_server_pools {
        server 宿主机ip:8082;
        server 宿主机ip:8083;
}
server {
        listen       8081;
        server_name  www_server_pools;
        location / {
            proxy_pass http://www_server_pools;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_redirect default;
            proxy_buffer_size 512k;
            proxy_buffers 6 512k;
            proxy_busy_buffers_size 512k;
            proxy_temp_file_write_size 512k;
            client_max_body_size 100m;
        }
}

说明:我是用docker在宿主机上搭建了两台机器环境(搭建方法),分别用8082和8083映射两台docker的8082(项目地址就是8082)。所以我访问 http://宿主机ip:8081/api/v1/user/host 就可以转发到宿主机 ip:8082 或宿主机 ip:8083 ,然后映射到docker中的8082。nginx默认负载均衡策略为轮询。

在这里插入图片描述

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值