如何找出nginx配置文件的所在位置?
1、如果程序在运行中
ps -ef | grep nginx
结果图:
2、程序并没有运行
查看软件安装路径
whereis nginx
查询运行文件所在路径
which nginx
当然还有另外的查询方法
rpm包安装的,可以用rpm -qa | grep “软件或者包的名字”查询;
yum方法安装的,可以用yum list installed查找;
3.启动时指定nginx配置文件
nginx命令
1.Mac下nginx启动、关闭与重启命令
nginx启动
- 检查nginx语法命令:sudo nginx -t
- 启动nginx:sudo nginx
- 关闭nginx:sudo nginx -s stop
- 重启nginx:sudo nginx -s reload
1.使用 nginx 报找不到命令,解决方法是配置环境变量
vim /etc/profile
export PATH=$PATH:/usr/local/nginx/sbin
wq! //保存退出
source /etc/profile //使配置生效
2.使用 nginx报权限不够,使用sudo nginx 报找不到命令,是因为sudo默认只将系统命令添加root权限,nginx不是系统命令,解决方法是 sudo vim /etc/sudoers,在secure_path中加入/usr/local/nginx/sbin
nginx配置文件
1.include mime.type
当我们打开OSC的一个页面,看到一个PNG格式的图片的时候,Nginx是这样发送格式信息的:
服务器上有enter_narrow.png这个文件,后缀名是png;
根据mime.types,这个文件的数据类型应该是image/png;
将Content-Type的值设置为image/png,然后发送给客户端。
2.default_type application/octet-stream; #默认文件类型,默认为text/plain
3.nginx丢失文件头
- 默认的情况下nginx引用header变量时不能使用带下划线的变量。要解决这样的问题只能单独配置underscores_in_headers on;
- 默认的情况下会忽略掉带下划线的变量。要解决这个需要配置ignore_invalid_headers off。
4.access_log off; #取消服务日志
5.client_body_temp_path /home/caros/odp_keel/webserver/cache/client_body;
的client_body_temp_path是制定post上传的$_FILES上传的文
件地址
6.FastCGI是一个可伸缩地、高速地在HTTP server和动态脚本语言间通信的接口。
fastcgi_connect_timeout # 指定NGINX与后端FastCGI server连接超时时间
fastcgi_temp_path path #fastcgi临时文件存放路径
7.proxy_pass http://192.168.8.5:8080/uri #配置反向代理
proxy_temp_path /tmp/proxy_temp #在一个指定的本地目录来缓存较大的代理请求。一般都设置在临时目录中
server{
listen 80;
server_name 172.24.228.63;
location ~ /8083/ {
proxy_pass http://172.24.228.63:8083;
rewrite "^/8083/(.*)$" /$1 break;
}
location ~ /8003/ {
proxy_pass http://172.24.228.63:8003;
rewrite "^/8003/(.*)$" /$1 break;
}
location ~ /8081/ {
proxy_pass http://172.24.228.63:8081;
rewrite "^/8081/(.*)$" /$1 break;
}
location ~ /8008/ {
proxy_pass http://172.24.228.63:8008;
rewrite "^/8081/(.*)$" /$1 break;
}
}
8.gzip on #打开gzip,可以见效网页下载体积,加快网页的加载速度
gzip_min_length 1k; # 启用gzip压缩的最小文件,小于设置值的文件将不会压缩
- policy_frame off;
Nginx 中 include 指令使用
1、应用场景:
当存在多个域名时,如果所有配置都写在 nginx.conf 主配置文件中,难免会显得杂乱与臃肿。
为了方便配置文件的维护,所以需要进行拆分配置。
2、在 nginx 的 conf 目录下 创建 vhost 文件夹:
负载均衡
1.在http模块新加
- 不添加则表示按照时间依次轮询;
upstream myserver{
server 192.168.8.5:8080;
server 192.168.8.5:8081 ;
}
- weight 标识按照权重分配
upstream myserver{
server 192.168.8.5:8080 weight=10;
server 192.168.8.5:8081 weight=5;
}
- iphash 将发请求的IP地址hash编码,每个编码对应一个server,这样可以保证session不变
upstream myserver{
iphash
server 192.168.8.5:8080;
server 192.168.8.5:8081;
}
- fair 按照服务器访问时间来处理请求,响应时间短的优先分配
upstream myserver{
server 192.168.8.5:8080;
server 192.168.8.5:8081;
fair
}
2.在server模块改动
sercer_name 192.168.8.5
location / {
proxy_pass http://myserver;
}
动静分离
1.把静态资源单独拿出来放在单独的域名下
location / www/{
root /data/;
index index.html index.html;
}
location / image/{
root /data/;
autoindex on;#列出文件目录
}
高可用(防止nginx宕机,可设置多台Nginx)
keepalived + 虚拟IP + 两台nginx服务器
1.yum install keepalived -y
2.两台服务器都需要安装,安装之后,在etc里面生成目录keepalived,有文件keepalived.conf,更改keepalived.conf配置文件中的属性
Nginx原理
Nginx启动后有两个进程一个master,一个worker(争抢)
一个master对应多个worker
nginx -s reload,利于热部署机制
每个worker都是独立的进程,如果其中一个worker出问题,其余worker可以继续工作
worker数量和CPU数量最好一致
worker_connection为2个或者4个
有4个worker,每个worker支持1024个连接数据,那worker支持最大并发数是多少? 41024/2 或者 41024/4
正向代理和反向代理
1.正向代理即是客户端代理, 代理客户端, 服务端不知道实际发起请求的客户端.
客户端需要配置代理服务器和最终要访问的服务器
2.反向代理即是服务端代理, 代理服务端, 客户端不知道实际提供服务的服务端
客户端不需要任何操作,只要访问最终要访问的服务器端就可以了。
最大并发
并发总数:max_clients = worker_processes * worker_connections
nginx做反向代理的情况下,max_clients = (worker_processes * worker_connections)/ 4 # 一般都除以4, 经验所得。
而操作系统可以打开的最大文件数和内存大小成正比,查看32G内存的机器上,理论情况下,可以打开的最大文件数:
#cat /proc/sys/fs/file-max