Nginx配置文件详解

Nginx配置文件详解

nginx在项目会经常用到,nginx的主要配置文件是nginx.conf,今天主要梳理一下这个文件都可以配置什么参数,以及这些参数起到什么作用。
这个 nginx中文文档大概看了几眼,写的很详细,有时间可以学习了解一下。

nginx的特点:
1.支持高并发,高性能
2.支持热部署
3.开源,而且应用广发,相关技术文档很多。
还有很多优秀的特点,官网上可以看到,给我的感觉就是这几点

nginx可以做什么
1.静态资源服务器,动静分离,一些项目上要展示的图片,不需要走后端调整,那就可以放到nginx上,请求过来直接返回。
2.反向代理服务器,这个很常用,可以在这里做负载均衡,缓存(没见过呢)。

上面提到的反向代理服务器,我记得刚毕业的时候面试会问,正向代理和反向代理的区别,服务请求分为客户端和服务端,这两个概念其实是从客户端的角度来考虑。
正向代理,代理的是客户端,假如我在内网黄静要访问外网的www.baidu .com.,那么我可能需要一个VPN,这个时候我作为客户端我是知道百度的存在的,我通过VPN去访问它,那么VPN代理我去访问外网的百度网站,这种形式就称它为正向代理。
反向代理,对于客户端来说,代理的是服务端,假如我要去访问jd.com,京东肯定应该有自己的网关,那么我访问到这个域名之后,经过京东的网关给我分发到具体的服务器上,作为客户端的我来说,我不知道这个服务器是什么,京东的具体服务端通过这个网关接收到了这个请求,这种形式就称为反向代理。
这两个概念现在问的也很少了,大概了解一下就行了。

nginx常用的命令
回到nginx上来,nginx常用的一些命令如下:

nginx -s reload  # 向主进程发送信号,重新加载配置文件,热重启
nginx -s reopen	 # 重启 Nginx
nginx -s stop    # 快速关闭
nginx -s quit    # 等待工作进程处理完成后关闭
nginx -T         # 查看当前 Nginx 最终的配置
nginx -t         # 检查配置是否有问题

nginx.conf
下面进入到今天的正题,这个配置文件大体上分为三个模块,main段,events段,http段,http段里面可以有多个server段,每个server段里面又可以有多个location段,这篇博客主要就是想记录一下这些段里都配置了什么主要的东西:

main段

user nginx; # 运行用户,默认即是nginx,可以不进行设置
worker_processes auto; # Nginx 进程数,一般设置为和 CPU 核数一样
error_log /var/log/nginx/error.log warn; # Nginx 的错误日志存放目录
pid /var/run/nginx.pid; # Nginx 服务启动时的 pid 存放位置
其中worker_processes 比较重要的,一般会指定个数,auto的话就是会自动设置成和服务器的cpu核数一样,这个需要重点了解一下。

events段

events {
use epoll; # 使用epoll的I/O模型(如果你不知道Nginx该使用哪种轮询方法,会自动选择一个最适合你操作系统的)
worker_connections 1024; # 每个进程允许最大并发数
}

http段
http {
# 设置日志模式
log_format main '$remote_addr - r e m o t e u s e r [ remote_user [ remoteuser[time_local] “KaTeX parse error: Double superscript at position 34: … '̲status b o d y b y t e s s e n t " body_bytes_sent " bodybytessent"http_referer” ’
‘“ h t t p u s e r a g e n t " " http_user_agent" " httpuseragent""http_x_forwarded_for”’;

access_log  /var/log/nginx/access.log  main;   # Nginx访问日志存放位置

sendfile            on;   # 开启高效传输模式
tcp_nopush          on;   # 减少网络报文段的数量
tcp_nodelay         on;
keepalive_timeout   65;   # 保持连接的时间,也叫超时时间,单位秒
types_hash_max_size 2048;

include             /etc/nginx/mime.types;      # 文件扩展名与类型映射表
default_type        application/octet-stream;   # 默认文件类型

include /etc/nginx/conf.d/*.conf;   # 加载子配置项

# server段配置信息
server {
	listen       80;       # 配置监听的端口
	server_name  localhost;    # 配置的域名
  
	# location段配置信息
	location / {
		root   /usr/share/nginx/html;  # 网站根目录
		index  index.html index.htm;   # 默认首页文件
		deny 172.168.22.11;   # 禁止访问的ip地址,可以为all
		allow 172.168.33.44;# 允许访问的ip地址,可以为all
	}
	
	error_page 500 502 503 504 /50x.html;  # 默认50x对应的访问页面
	error_page 400 404 error.html;   # 同上
}

实例一
访问http://127.0.0.1:80,访问到该服务器的8080端口对应的服务

server {
listen 80;
server_name localhost; # server_name对应的就是请求的域名部分或者对应的ip
location / { # location后面匹配的就是域名或者ip后面对应的uri,这里可以使用正则匹配
#添加下面的一句话
proxy_pass http://127.0.0.1:8080;
index index.html index.htm;
}

实例二
根据访问的uri不同跳转到不同的服务器上
访问http://ip:9001/edu 直接跳到http://127.0.0.1:8080/edu
访问http://ip:9001/vod 直接跳到http://127.0.0.1:9090/vod

server {
listen 9001;
server_name 192.168.71.167;
location ~/edu/ {
proxy_pass http://127.0.0.1:8080;
}
location ~/vod/ {
proxy_pass http://127.0.0.1:9090;
}
}

实例三
配置https协议访问
server {
listen 443 ssl;
server_name 127.0.0.1;
#填写证书文件名称
ssl_certificate /usr/local/nginx/cert/server.crt;
#填写证书私钥文件名称
ssl_certificate_key /usr/local/nginx/cert/server.key;
location / {
root html;
index index.html index.htm;
}
}

实例四
配置负载均衡,nginx实现负载均衡童工upstream
upstream demo_server {
server 121.42.11.34:8020;
server 121.42.11.34:8030;
server 121.42.11.34:8040;
}

server {
listen 80;
server_name balance.lion.club;

location /balance/ {
proxy_pass http://demo_server;
}
}
nginx默认的负载均衡策略是轮询,还可以设置ip_hash等策略。
upstream demo_server {
ip_hash;
server 121.42.11.34:8020;
server 121.42.11.34:8030;
server 121.42.11.34:8040;
}

server {
listen 80;
server_name balance.lion.club;

location /balance/ {
proxy_pass http://demo_server;
}
}

此外nginx还可以设置缓存,设置黑名单,白名单等功能,这些工作中暂时没有遇到,有兴趣的可以自己去官方文档查看。
参考文档:
https://www.cnblogs.com/kn-zheng/p/17495392.html
https://zhuanlan.zhihu.com/p/625184405

“是不是一定要有所失,才能有所悟”

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值