Nginx配置静态文件服务从入门到精通

作者:三十三重天

博客:http://www.zhouhuibo.club

通过学习和分享的过程,将自己工作中的问题和技术总结输出,希望菜鸟和老鸟都能通过自己的文章收获新的知识,并付诸实施。

引言

使用Nginx布署静态文件服务,Nginx服务得先有才能进行后续的事情。如果有同学不会部署的,可以参考我的上一篇文章yum安装Nginx全流程指南。已经部署好的同学可以直接看下面的内容了。

Nginx 场景介绍

Nginx的配置繁多且复杂,但是实际的使用场景其实无非就是这么几个

  • 正向代理
  • 反向代理
  • 负载均衡
  • 动静分离

针对不同的应用场景有不同的配置文件,在未来我会针对不同的场景依次说明并给出对应的配置文件。在此留个坑,哈哈。

开始配置

回到当前主题,我们是要配置一个静态文件服务供客户端访问。

一、linux系统定义一个访问目录

在home目录新建一个files文件夹,里面存放文件供客户端访问

mkdir -p /home/files

二、Nginx 添加一个Location将刚才的目录暴露出去

如果你是用yum安装nginx的,那在etc/nginx/nginx.conf目录下会有一个文件default.conf

default.conf是默认配置文件,暴露80端口,默认页面为index.hmtl

cat default.conf可以看到如图所示内容,添加红框中的配置到文件中

image-20210315195913846

location /download { alias /home/files/; autoindex on; }

这一段的意思是增加127.0.0.1:80/download的解析,路径指向/home/files文件夹。 autoindex on;代表开启目录浏览

三、检验配置并重启Nginx

1、检验配置文件是否正确

nginx -t

2、重启nginx

nginx -s reload

其他配置项

server { listen 80; location /download { #转到的Nginx文件目录 alias /home/files; #打开目录浏览功能 autoindex on; #默认为on,显示出文件的确切大小,单位是bytes #显示出文件的大概大小,单位是kB或者MB或者GB autoindex_exact_size off; #默认为off,显示的文件时间为GMT时间。 #改为on后,显示的文件时间为文件的服务器时间 autoindex_localtime on; #让浏览器不保存临时文件 add_header Cache-Control no-store; #避免中文乱码 charset utf-8,gbk; #希望请求文件是下载而不是显示内容 #add_header Content-Disposition attachment; } }

部署过程中出现的问题

404

如果出现404错误,大概率可能是配置文件出错。

有可能是location后多加一个左斜杠/

也有可以是指向的目录地址不存在

403

403 Forbidden 代表被禁止的,一般是三种情况导致的

1、目录权限不足

检查目录权限。权限不足就将权限加上

chmod -R 755 /home/files

2、nginx.conf用户权限问题

vim /etc/nginx/nginx.conf

把 user 用户名 改为 user root 或 其它有高权限的用户名称即可

3 、Centos中的selinux配置未关闭

查看SELinux状态:

如果SELinux status参数为enabled即为开启状态

/usr/sbin/sestatus -v

如何关闭?

1、临时关闭(不用重启机器):

setenforce 0

2、永久关闭(要重启机器)

vim /etc/selinux/config

将SELINUX=enforcing改为SELINUX=disabled

END

欢迎关注公众号 程序员工具集 👍👍 致力于分享优秀的开源项目、学习资源 、常用工具。

回复关键词“关注礼包”,送你一份最全的程序员技能图谱。

wechat.png


__EOF__

本文作者三十三重天
本文链接https://www.cnblogs.com/foxhappy/p/14541313.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   三十三重天  阅读(1513)  评论(2编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
点击右上角即可分享
微信分享提示