图片服务器搭建


在博客园中想要引用一些图片时,发现qq空间的相册和github都不好用,因此就准备放一些图片到阿里云上,自己配置一个图片服务器,说是图片服务器,实际上就是用nginx做转发,让外面能访问到服务器的图片

安装nginx

安装nginx参照官网教程进行安装nginx官网

首先安装yum-utils

sudo yum install yum-utils

然后设置nginx的yum仓库

vim /etc/yum.repos.d/nginx.repo

添加如下内容

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

安装nginx

sudo yum install nginx

安装时注意验证fingerprint: 573B FD6B 3D8F BC64 1079 A6AB ABF5 BD82 7BD9 BF62

然后可以看到nginx已经被成功安装

$ nginx -v
nginx version: nginx/1.20.1

配置防火墙规则

nginx启动,通过 nginx -t 指令发现配置文件没问题的,并且执行curl localhost能够看到返回结果的情况下,使用外网ip地址登陆还是访问不了,这时需要查看是否为防火墙的配置问题

由于一直使用的iptables,因此首先把firewall关掉

# systemctl stop firewalld.service #停止firewall
# systemctl disable firewalld.service #禁止firewall开机启动

然后执行# firewall-cmd --state命令,返回结果为not running时,说明firewall已被停止

使用iptables首先需要安装服务:

# yum install iptables-services

之后修改配置文件,把需要的端口加进去

# vim /etc/sysconfig/iptables
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [102733:17748787]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
# -A INPUT -j REJECT --reject-with icmp-host-prohibited
-A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

这里注意要把reject位置放到accept的后面,否则reject后面的端口会被拦截,我就是在这里卡了好久。配好之后重启iptables服务

# service iptables restart

配置nginx文件

在nginx的server中添加这一行

location /url_to_images/{
    root /location_of_images;
    autoindex on;
}

这里有一个问题还没有解决,就是当访问接口时ip:port/images时,会在root的path中添加/images这一个后缀,因此就会访问/location_of_images/images路径,这个我通过把文件放入images文件解决的,后面需要研究一下如何去除这个后缀

配置好之后,执行

# nginx -s reload

然后访问相应url,就可以看到相应路径下的图片了