记一次OpenResty配置折腾

最近新购入了一台服务器,然后因为没有备案,所以就不能通过80端口进行访问。
但是我另外一台服务器有备案,那是否可以通过其他的端口,然后进行反向代理呢?
答案是可以的。

A 服务器是A服务商的(后续简称为A),B服务器是T服务商的,
域名是在A服务商购买的,并且已经备案;
另外openresty部署在A的docker容器里面;

首先确认宿主网络权限

首先在A服务器上看是否正常访问B的服务;
curl http//:xxx.xxx.xx.xxx:8080/

确认域名cdn A记录

折腾最多的是在没有添加A记录,然后导致在浏览器上通过域名访问时失效;
在A服务器上可以通过以下两个命令确认该服务器的公网ip,也通过查看服务商给的公网Ip

1
2
3
4
5
6
curl http://ifconfig.me
# 或
curl ip.sb
# 或
curl cip.cc# 或直接查网卡ip addr show eth0

添加A记录后通过以下命令查询该域名是否正常解析到该主机上;

1
2
dig xxx.cumd.vip
nslookup xxx.cumd.vip

更新openresty配置

配置文件路径:/home/openresty/nginx/conf.d

该路径为容器映射宿主机路径

通常我们会以为conf为默认的,但是在openresty中并不是默认路径
这里我是新增了一个独立配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
server {
listen 80;
server_name xxx.cumd.vip;

# 反向代理到本机 Lsky
location / {
proxy_pass http://xxx.xxx.xxx.xxx:8080;
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_connect_timeout 60s;
proxy_read_timeout 300s;
proxy_send_timeout 300s;
client_max_body_size 50M;

# 日志
access_log /usr/local/openresty/nginx/logs/lsky.access.log;
error_log /usr/local/openresty/nginx/logs/lsky.error.log;
}

# 静态图片缓存(30天)
location ~* \.(jpg|jpeg|png|gif|webp|ico|svg|bmp)$ {
proxy_pass http://xxx.xxx.xxx.xxx:8080;
proxy_cache_valid 200 30d;
proxy_cache_key $host$uri;
expires 30d;
add_header Cache-Control "public, max-age=2592000";
}
}

该配置可修改后,正常使用;

重启服务 或者 热加载

首先可以通过docker命令进行重启,也可以进入容器后进行热部署。
我这里是通过docker命令进行容器重启;

1
docker restart <容器名称或容器ID>
1
2
openresty -t #检查相关配置
openresty -s reload #重新加载配置

后续

目前是已经能过通过域名访问该服务了,但是还是存在网页中使用了ip的方式,估计是应用程序的问题;
本次修改配置也是折腾够呛的,但是能够完成也是很棒的。
后续估计会进行重构相关的服务,也可能将就使用。