Nginx的使用经验小结
Nginx
Nginx简单介绍
一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器
Nginx命令参数
nginx-t测试配置是否正确
nginx-sreload加载最新配置
nginx-sstop立即停止
nginx-squit优雅停止
nginx-sreopen重新打开日志
kill-USR2cat/usr/local/nginx/logs/nginx.pid快速重启
Nginx全局段配置
worker_processes1;工作进程为1个CPU数量*核数
events区段网卡请求80443Nginx触发事件
Nginx配置虚拟主机
listen
server_name
location
Nginx日志管理
*系统默认日志格式:log_formatmain'$remote_addr$request_length$body_bytes_sent$request_time[s]--[$time_local]''"$request"$status$http_referer"-""$http_user_agent"$server_name$server_addr$http_x_forwarded_for$http_x_real_ip';
*自定义日志格式:log_formatsimple'$remote_addr--$request'
*系统默认日志释义:远程IP-远程用户/用户时间请求方法请求body长度长度referer来源信息http-user-agent用户代理/蜘蛛被转发请求的原始iphttp_x_forwarded_for在经过代理是代理把你的本来的IP加在此头信息中,传输你的原始IP
Nginx-Laravel5项目搭建
window上传本地项目使用secureCRT-sftpputget命令上传connectsftpsession,远程:cd本地:lcd,lpwd,put*.zip
Laravel5返回500权限修改:1.chmod777-Rstorage2.chmod777-Rbootstrap/cache/
配置env:vi.env修改数据库配置相关参数
执行phpartisanmigrate创建数据表
Nginx支持pathinfo
#典型配置 location~\.php${ roothtml; fastcgi_pass127.0.0.1:9000; fastcgi_indexindex.php; fastcgi_paramSCRIPT_FILENAME$DOCUMENT_ROOT$fastcgi_script_name; includefastcgi_params; } #修改第1,6行,支持pathinfo location~\.php(.*)${#正则匹配.php后的pathinfo部分 roothtml; fastcgi_pass127.0.0.1:9000; fastcgi_indexindex.php; fastcgi_paramSCRIPT_FILENAME$DOCUMENT_ROOT$fastcgi_script_name; fastcgi_paramPATH_INFO$1;#把pathinfo部分赋给PATH_INFO变量 includefastcgi_params; }
Nginx支持URL重写
1.如果不是资源文件就重写
if(!-e$request_filename){ rewrite(.*)$/index.php/$1; }
2.try_files
try_files$uri$uri//index.php?$args;
Nginx反向代理与动静分离
用Nginx做反向代理用proxy_pass,以反向代理为例,nginx不自己处理图片的相关请求,而是把图片的请求转发给Apache处理。
location~\.(jpg|jpeg|png|gif)${ proxy_passHTTP://IP:port; }
反向代理导致了后端服务器接到客户端IP为前端服务器的IP而不是真正的IP解决方案
location~\.(jpg|jpeg|png|gif){ proxy_set_headerX-Forwarded-For$remote_addr; proxy_passIP:port; }
Nginx集群和负载均衡
Upstream{}模块把多台服务器加入到一个组然后memcachepass,fastcgi_pass,proxy_pass=>upstream组
配置Upstream
upstreamweb{ serverIP:8080weight=1max_fails=2fail_timeout=30s; serverIP2:80weight=1max_fails=2fail_timeout=30s; }
下游调用
location~\.(jpg|png|gif|jpeg){ proxy_set_headerX-Forwarded-For$remote_addr; proxy_passhttp://web; }
负载均衡常见的策略释义
基于cookie值区别做负载均衡(Nginxsticky们模块)
基于URI利用一致性哈希算法做均衡(NginxHttpUPstreamConsistentHash模块)
基于IP做负载均衡