Skip to main content

厦门医院

VPN地址

登录VPN

url: https://220.160.106.91:4343/
user: xuke
pwd: Xuke@123456

登录堡垒机

user: xuke
pwd: Kc@123456

root密码wield

password: gwesf@123

10.10.251.31服务

# root 权限
su root gwesf@123
#nginx 路径
/usr/local/nginx/sbin/nginx
# php
listen=127.0.0.1:9000
# mysql账号密码:
mysql -uroot -pXmfyYYD8##817W
# redis密码:
RedisFJSET#!_44as

10.100.10.85

su root gwesf@123
#nginx 路径
/usr/local/nginx/sbin/nginx
# php
listen=127.0.0.1:9000

nginx 路径

项目部署流程

一、基础结构

对外服务器: 10.100.10.85
中转服务器: 192.168.5.85
内网服务器: 10.10.251.31

二、流量路由规则

10.100.10.85访问10.10.251.31(通过192.168.5.85中转)

API访问: 10.100.10.85访问 -> 192.168.5.85:10000 -> 10.10.251.31:10000
数据库MySQL: 10.100.10.85访问 -> 92.168.5.85:3306 -> 10.10.251.31:3306
文件上传: 10.100.10.85访问 -> 92.168.5.85:122 -> 10.10.251.31:122

10.10.251.31返回10.100.10.85

拉消息、合并代码: 10.100.10.85 -> 192.168.5.85:20000 -> 10.100.10.85:20000

三、部署步骤

10.100.10.85反向代理配置

server {
listen 20000;
server_name repo.hbb.net;
location / {
proxy_pass http://152.136.233.163:2000;
}
}
server {
listen 80;
server_name mirrors.openanolis.cn;

location / {
proxy_pass http://mirrors.openanolis.cn;
}
}

server {
listen 80;
server_name mirrors.fedoraproject.org;
location / {
proxy_pass http://mirrors.fedoraproject.org;
}
}

server {
listen 80;
server_name mirror.math.princeton.edu;
location /
{
proxy_pass http://mirror.math.princeton.edu;
}
}
server {
listen 80;
server_name repo.mysql.com;
location / {
proxy_pass http://repo.mysql.com;
}
}

10.10.251.31 配置nginx代码

server {
listen 80;
server_name localhost;

index index.php index.html;
root /var/www/xiada/api/web;
access_log logs/xiada.hbb.net.access.log;

location / {
try_files $uri $uri/ /index.php$is_args$args;
}


location ~ \.php$ {
proxy_ignore_client_abort on;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_pass 127.0.0.1:9000;
try_files $uri =404;
}

location /pages {
alias /var/www/dist/;
}

location /files/ {
proxy_pass http://10.10.251.31/files/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

nginx重启

sudo nginx -t && sudo systemctl reload nginx

四、192.168.5.85 中转配置(使用iptables)

启用IP转发

echo 1 > /proc/sys/net/ipv4/ip_forward

设置转发规则

# 10000 转到C服务器(API)
iptables -t nat -A PREROUTING -p tcp --dport 10000 -j DNAT --to-destination 10.10.251.31:10000
iptables -A FORWARD -p tcp -d 10.10.251.31 --dport 10000 -j ACCEPT

# 3306 转到MySQL
iptables -t nat -A PREROUTING -p tcp --dport 3306 -j DNAT --to-destination 10.10.251.31:3306
iptables -A FORWARD -p tcp -d 10.10.251.31 --dport 3306 -j ACCEPT

# 122文件服务
iptables -t nat -A PREROUTING -p tcp --dport 122 -j DNAT --to-destination 10.10.251.31:122
iptables -A FORWARD -p tcp -d 10.10.251.31 --dport 122 -j ACCEPT

# 20000转到A接收消息
iptables -t nat -A PREROUTING -p tcp --dport 20000 -j DNAT --to-destination 10.100.10.85:20000
iptables -A FORWARD -p tcp -d 10.100.10.85 --dport 20000 -j ACCEPT
# 开启转发日志
iptables -A FORWARD -j LOG --log-prefix "IPT-FWD: "

五、Yii2中的数据库连接配置

'components' => [
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=127.0.0.1;dbname=mydatabase', // 如果以本机形式运行 MySQL
'username' => 'dbuser',
'password' => 'dbpassword',
'charset' => 'utf8mb4',
],
]

如果供给 A 进行连接,需要把地址改为 C 的内网 IP: host=10.10.251.2

六、iptables常用规则

iptables规则

iptables [-t 表名] 命令 链名 [匹配条件] -j 动作
  • -t 表名:
    • filter:用于数据包过滤(默认表,控制数据包的接受、丢弃等)。
    • nat:用于网络地址转换(NAT,如端口转发、地址伪装)。
    • mangle:用于修改数据包(如 TTL、标记)。
    • raw:用于标记数据包以跳过连接跟踪。
    • security(较少使用):用于 SELinux 等安全策略。
  • 命令: 操作流程:
    • -A: 追加规则
    • -D: 删除规则
    • -I: 插入规则 (指定位置)
    • -L: 列出规则
    • -F: 清空链中的规则
    • -P: 设置链的默认策略
  • 链名:
    • PREROUTING: 数据包进入系统时的处理
    • INPUT: 数据包到达本地进程时的处理。
    • FORWARD: 数据包转发时的处理。
    • OUTPUT: 本地进程发出数据包时的处理。
    • POSTROUTING: 数据包离开系统时的处理。
  • 匹配条件: 如:-s(源IP)、-d(目的IP)、-p(协议)、--sport(源端口)、--dport(目的端口).
  • -j动作: 指定匹配后的动作.
  1. 查看规则
iptables -L -v -n --line-numbers
  • -L: 列出规则
  • -v: 显示详细信息(如数据包计数)
  • -n: 以数字形式显示IP和端口(避免DNS解析)
  • --line-numbers: 显示规则编号
  1. 设置链的默认策略
iptables -P INPUT DROP
  • 将 INPUT 链的默认策略设为 DROP,丢弃所有未明确允许的传入数据包。
  1. 允许特定流量
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
  1. 阻止特定IP
iptables -A INPUT -s 192.168.1.100 -j DROP
  • 阻止来自 192.168.1.100 的所有流量。
  1. 端口转发(NAT)
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.10:8080
  • 将进入的80端口流量转发到192.168.1.10的8080端口
  1. 启用NAT伪装(Masquerade)
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
  • 对通过 eth0 输出的数据包进行源地址伪装,常用于共享网络连接。
  1. 记录日志
iptables -A INPUT -p tcp --dport 80 -j LOG --log-prefix "HTTP Traffic: "
  • 记录目的端口为 80 的 TCP 流量日志,日志前缀为 "HTTP Traffic: "。
  1. 清空规则
iptables -F
  1. 保存和恢复规则
  • 保存规则到文件
    iptables-save > /etc/iptables/rules.v4
  • 恢复规则
    iptables-restore < /etc/iptables/rules.v4

内外服务器部署git代码。

A服务器: 192.168.1.1 有公网 B服务器: 192.168.1.2 无公网

启动SOCKS5

B服务器上运行建立只想A的本地1080端口
#建立一个 SOCKS5 动态代理隧道 到 A 服务器(192.168.1.1)
ssh -N -f -D 1080 user@192.168.1.1
`-N`: 不执行远程命令(No command),只建立隧道或转发
`-f`: 在连接建立后让 SSH 后台运行(fork 到后台),不会卡住当前终端
`-D 1080`: 启用 SOCKS 动态端口转发,监听本地端口 1080,用于代理所有 TCP 请求
cd /your/project/kc_api
git config http.https://gitee.com/kc_11/kc_api.git.proxy "socks5h://127.0.0.1:1080"
# 验证配置
git config --get-regexp proxy
# 取消代理
git config --unset http.https://gitee.com/kc_11/kc_api.git.proxy
B服务器克隆代码或者拉取
cd /var/www/project && git pull