你好,我是赵兴晨,97年文科程序员。
今天咱们聊聊Nginx核心配置中的HTTP配置块,这个配置块在我们的日常使用中极为常见,它的重要性不言而喻。
HTTP配置块在Nginx的配置架构中占据着核心地位,它直接关系到服务器如何处理HTTP请求和响应。通过精心设计HTTP模块,我们可以显著提升Nginx服务器的性能,加速网站的访问速度,从而优化用户体验。
现在,就让我们开始探索HTTP配置块吧!
HTTP协议相关的配置结构
http {
# 各 server 的公共配置
...
server {
# 每个 server 用于定义一个虚拟主机,
# 第一个 server 为默认虚拟服务器
...
# 虚拟主机名
server_name example.com www.example.com;
# 主目录
root /path/to/your/root/directory;
# 路径别名
alias /path/to/your/alias/directory;
location [OPERATOR] URL {
# 指定 URL 的特性
...
}
}
server {
...
}
}
HTTP协议配置说明
1、文件类型与默认MIME类型
- Nginx使用mime.types文件来识别不同的文件扩展名及其对应的MIME类型。
- 未在mime.types中定义的文件类型将使用default_type指定的MIME类型。
示例:
如果你的网站提供自定义文件格式,比如.myapp,你可以在mime.types文件中添加 .myapp application/myapp,然后在Nginx中使用 include mime.types; 来启用这些自定义类型。
2、日志记录
- 日志是服务器运行的重要记录,可以帮助我们监控流量和排查问题。
- log_format 定义了日志的格式,而 access_log 指定了日志文件的存放路径和使用的格式。
示例:
log_format main '$http_x_forwarded_for - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent"';
access_log /var/log/nginx/access.log main;
3、文件传输优化
- sendfile 指令用于优化文件传输,减少CPU利用率。
- tcp_nopush 和 tcp_nodelay 用于调整 TCP 传输行为,减少网络延迟,提高性能。
示例:
默认情况下,sendfile是关闭的,你可以在HTTP块中添加 sendfile on; 来启用。
4、会话保持时间
- keeplived_timeout 设置客户端与服务器之间连接的保持时间,允许一定时间内的多个请求复用同一个链接。
示例:
如果你希望减少因 keeplived 连接产生的服务器负载,可以设置较短的超时时间。
keepalive_timeout 5;
5、压缩传输
gzip 压缩可以减少传输的数据量,加快页面加载速度,但可能会增加服务器的CPU负载。
示例:
启动gzip压缩可以减少传输的数据量,配置如下
gzip on;
gzip_types text/plain text/css text/xml application/json;
6、监听与服务器名称
listen 指令让服务器监听指定的端口,而server_name定义了服务器的名称,可以用与虚拟主机的配置。
示例:
为特定域名配置服务器并指定默认服务器
server {
listen 80;
server_name mywebsite.com *.mywebsite.com;
default_server;
...
}
7、网站根目录与默认首页
root 指定了网站内容的根目录,而index定义了默认首页文件,当请求网站根目录时提供。
示例:
设置网站根目录和默认首页
location / {
root /var/www/mywebsite;
index index.php index.html index.htm;
}
8、错误页面定义
error_page允许我们为特定的HTTP状态码定义自定义的错误页面,提升用户体验。
示例:
自定义404 和 500 错误页面
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
9、安全性配置
使用正则表达式匹配 .ht 和 passwd.html 等敏感文件,并拒绝访问,增强了服务器的安全性。
示例:
location ~ /\.ht {
deny all;
}
location ~ /passwd.html {
deny all;
}
10、HTTPS服务器配置
配置HTTPS可以参考我的另一篇文章《Nginx HTTPS配置:一篇文章解决所有痛点》
示例:
配置HTTPS服务器,启用SSL加密
server {
listen 443 ssl;
server_name mywebsite.com;
ssl_certificate /etc/ssl/certs/mywebsite.com.crt;
ssl_certificate_key /etc/ssl/private/mywebsite.com.key;
...
}
OK,今天的分享到这里就结束啦,我们从文件类型到性能优化,每一项配置都是为了提升网站的响应速度和安全性。希望这些只是能够帮助您更好地利用Nginx的强大功能。
请继续关注,明天我将分享更具体的Nginx核心配置示例,让你对Nginx的配置更加通透。感谢阅读,咱们明天见!
最后,我为您准备了一份特别的技术学习礼物,包括:
Linux学习笔记:详尽记录了Linux的核心知识点和实用技巧。
Java基础笔记:为您打下坚实的Java编程基础。
Java面试总结:十万字的面试经验,助您轻松应对各种技术面试。
【一键领取】
领取这份资料包,您只需轻松一扫:
按住👇🏻图片,扫描二维码,备注:【大礼包】
通过好友验证后,您的的专属资料包就会立即发送给您。
Linux系统学习笔记、Java基础学习笔记、10万字Java面试总结