看一个小例子.

假设.

服务器ip. 1.1.1.1

域名. xxx.com

众所周知,直接访问域名会访问服务器的80端口. 如果要访问8080端口,就要加上端口号, 如 xxx.com:8080 但是这样太麻烦且不切实际. 仔细想想, 我们访问别人网站的时候, 并没有输入端口号, 而是通过类似 test.xxx.com 这样的域名, 前面的 test 就是我们需要设置的三级域名.

登录阿里云

本实例安全组 -> 添加安全组规则 填写需要开放的端口(8080)和授权对象(一般为0.0.0.0/0)

解析设置 -> 添加记录 填写主机记录(test)和记录值(1.1.1.1)

搞定上面2步, 我们就可以进入服务器进行配置, 为了方便好管理, 在服务器里下载 nginx 下载好了之后, 在根目录就有nginx_conf 文件夹, 进去后新建一个test.conf 文件

写入.

server {
    listen 80;
    server_name test.xxx.com;
    #proxy_set_header Host $host;
    #proxy_set_header X-Real-IP $remote_addr;
    #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    
    location / {
                  proxy_pass http://xxx.com:8080;
          }
}

说明:

监听 80 端口

当访问的域名是 test.xxx.com

注释的参数 不知道是什么意思 自己百度就ok

设置代理路径 xxx.com:8080

我的理解是 它可以接受 *.xxx.com , 然后再在 nginx 中判断你传入的是什么三级域名, 在做转发处理

这时, 你又会有新的疑问了, 我想监听8080和8081端口要怎么设置呢? 比如

test.xxx.com -> 1.1.1.1:8080

test2.xxx.com -> 1.1.1.1:8081

你只需要修改一点就可以了

server {
    listen 80;
    server_name test.xxx.com;
    #proxy_set_header Host $host;
    #proxy_set_header X-Real-IP $remote_addr;
    #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    
    location / {
                  proxy_pass http://xxx.com:8080;
          }
}

server {
    listen 80;
    server_name test2.xxx.com;
    #proxy_set_header Host $host;
    #proxy_set_header X-Real-IP $remote_addr;
    #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    
    location / {
                  proxy_pass http://xxx.com:8081;
          }
}

上面配置代码有点重复, 应该有更好的写法, 我懒就不修改了

微信授权 配置cname

由于在慕课网上学习到微信支付授权, 需要到公众号配置安全接口, 我不会从阿里云做内网穿透, 只好从 natapp 买了个最便宜的隧道, 但是微信公众号需要域名备案, 只好把阿里云域名绑定到 natapp 中, 从阿里云转发到natapp 再转发到本机端口 (绕来绕去好麻烦),

其实配置很简单

注册并下载 natapp, 购买 VIP-1 型的隧道 并绑定域名

前往阿里云配置 cname 解析设置 -> 添加记录 填写主机记录(test)和记录值(natapp 的服务器地址)

由于 linux 解压 natapp.zip 后只有一个 natapp 文件, 每次运行输入 authtoken 很麻烦, 就可以写一个 shell 小脚本

cd /home/null/ 你的路径
./natapp authtoken= 你的token

到这里, 访问 natapp 服务器 和 cname 应该是同一个页面了

微信授权还没有测试, 就不说了😉