linux平台下nginx的新手教程
linux平台下nginx的新手教程
最近在实施项目时,用到了nginx,就简单记录了一下配置的过程和遇见的问题,以供参考。
先把使用的配置文件(nginx.conf)发出来。
#设置用户
user root; #Nginx 服务启动时,只开启 1 个工作进程来处理客户端的网络请求。可以设置为 auto
worker_processes 1;#每个 worker 进程最多同时处理 1024 个连接
events {worker_connections 1024;
}http {include mime.types;default_type application/octet-stream;#允许客户端上传最大 20MB 的文件client_max_body_size 20M;# 配置日志格式log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';#配置日志access_log /var/log/nginx/access.log main;upstream backend_servers {#轮询算法动态 使用最少连接算法#least_conn; #根据ip的hash值分配服务器,会一直分配某一台服务器ip_hash; server IP1;server IP2;server IP3;}server {listen 80;#这个是你nginx 的对外的域名或者IP ,可以写你的域名也可以写具体的IPserver_name 127.0.0.1;client_max_body_size 20M;location / {client_max_body_size 20M;add_header backendIP $upstream_addr;add_header backendCode $upstream_status;# 核心配置proxy_pass http://backend_servers;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_set_header X-Forwarded-Host $host;
# proxy_set_header x-Forwarded-Post $server_port;# 优化配置proxy_connect_timeout 30s;proxy_read_timeout 30s;proxy_send_timeout 30s;}}
}
ngxin常用命令和默认地址(linux)
1、 nginx配置文件地址默认:/etc/nginx/nginx.conf
2、日志地址:
运行日志 /var/log/nginx/access.log
错误日志 /var/log/nginx/error.log
3、启动命令 sudo systemctl start nginx
4、检查命令 sudo nginx -t
提示中包含 “syntax is ok”和“test is successful”,代表没问题,修改完配置,建议都用命令检查一下。
5、重新加载命令 sudo systemctl reload nginx
6、查看进程 ps -ef|grep nginx
7、杀死进程
问题:登录会话session失效的问题
原因:nginx的轮询方式设置的least_conn (优先最少的连接服务器),就出现了session共享的问题,我的需求是将几个应用的对外IP和端口进行统一,所以只需代理就可以了,后面采用了ip_hash的轮询方式。
方案:session 失效的问题,如果你的项目用到了redis可以利用redis实现session共享
问题2:客户端上传附件出现编码413错误,大小限制
原因:nginx 对附件大小如果不做配置,是有限制的,大小应该是1-2M左右
方案:在配置文件中http、server、location中都配置一下, client_max_body_size 20M;大小自改。
问题3:上传附件时遇见的权限问题
原因:查看日志发现显示是访问权限问题(13: Permission denied),定位配置问题。
方案:1、给予用户权限。2、使用root
问题4:如何查看目前登录的系统是分发的哪台应用
可以在配置文件中的location中配置下面两句,可以在浏览器 F12 ,发出的请求头中,可以看到转发请求的IP
add_header backendIP $upstream_addr;add_header backendCode $upstream_status;
记录日期:2025.09.26