1.申请公网ip

当前只有联通办宽带是可以给公网ip了

2. 域名映射到这个公网ip

我自己是购买的腾讯云的域名服务,当时这个域名50元买10年,lucky!

可以如下图所示配置相应的域名映射和二级域名映射

3. 配置DDNS动态域名解析

使得我的域名都能绑定到这个公网ip

如下所示配置:

点击应用后如下

在此之前最好固定下nas的局域网ip,不然断电重启ip改变了会造成一些麻烦,如下操作

同时将这个ip和mac绑定下

4. 路由器开启端口映射

将nas的端口暴露到外网

如图:

这边一共开启了3个端口

  • 22端口:用于ssh连接nas

  • 9443端口:nas的443端口

  • 8000端口,对应nas的第一层nginx的80端口映射的8000端口

没有单独暴露nas的80端口也是为了一定程度的安全考虑

5.配置一级nginx

主要用于二级域名映射到对应的服务资源,此处nginx是必须使用host模式部署

特别注意:

halo的服务加了client_max_body_size 配置,因为导入备份文件都是很大的,不加的话导入备份会报错413 请求体太大

# nas服务的9443
server {
	listen 8000;  # 80的外部端口
	server_name nas.carolin-violet.cn;

    location / {
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        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;
        proxy_pass http://192.168.0.100:9443/;
    }
}

# mysql
server {
    listen 8000;
    server_name mysql.carolin-violet.cn;

    location / {
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        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;
        proxy_pass http://192.168.0.100:3306;
    }
}

# redis
server {
    listen 8000;
    server_name redis.carolin-violet.cn;

    location / {
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        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;
        proxy_pass http://192.168.0.100:6380;
    }
}

# minio控制台
server {
    listen 8000;
    server_name minio.carolin-violet.cn;

	# 该站点上传限制:100M(覆盖全局配置)
    client_max_body_size 100m;

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_connect_timeout 300;
  
        proxy_set_header Connection "";
        chunked_transfer_encoding off;

        # 添加了websocket支持
        # Default is HTTP/1, keepalive is only enabled in HTTP/1.1
        proxy_http_version      1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_next_upstream     http_500 http_502 http_503 http_504 error timeout invalid_header;
        proxy_set_header        Host  $http_host;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_pass http://192.168.0.100:9001;
    }
}

# minio的api
server {
    listen 8000;
    server_name minio-api.carolin-violet.cn;

	# 该站点上传限制:100M(覆盖全局配置)
    client_max_body_size 100m;

    location / {
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        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;
        proxy_pass http://192.168.0.100:9000;
    }
}

# 用户中心前端服务
server {
    listen 8000;
    server_name user-center.carolin-violet.cn;

    location / {
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        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;
        proxy_pass http://192.168.0.100:8101;
    }
}

# 书签系统前端服务
server {
    listen 8000;
    server_name bookmark.carolin-violet.cn;

    location / {
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        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;
        proxy_pass http://192.168.0.100:8102;
    }
}

# Halo 服务
server {
    listen 8000;
    server_name halo.carolin-violet.cn;

	# 该站点上传限制:2000M(覆盖全局配置)
    client_max_body_size 2000m;

    location / {
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        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_pass http://192.168.0.100:8090/;
    }
}

# firefox
server {
    listen 8000;
    server_name firefox.carolin-violet.cn;

    location / {
        proxy_pass http://192.168.0.100:5800/;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        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;
    }
}