在Nginx1.16.0版本下测试通过。打开网站的nginx配置文件,在server{}代码里面添加如下代码location / { try_files $uri $uri/ $uri.php?$args;}
意思就是如果访问的url地址找不到,那么nginx会尝试在该url后面加上.php后缀(因为这个后缀加上后用户在浏览器是不可见的,从而达到隐藏php后缀的目的),然后再进行访问。如果加上php后缀后还是找不到文件这时候会返回404错误!
server{listen 80;………………………………location / {try_files $uri $uri/ $uri.php?$args;}………………………………}
如果要隐藏php外的其他后缀写法基本类似,另外如果nginx本身已经有location /{ …………}配置语句了,建议将try_files $uri $uri/ $uri.php?$args;直接写到该配置语句内,而不是从新再写一个。
nginx禁止解析php、禁止访问目录
server{………………#指定目录禁止php解析location /upload/ {location ~ .*\.(php)?${deny all;}}#禁止访问的文件或目录location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md){return 404;}#ERROR-PAGE-START 错误页配置,可以注释、删除或修改error_page 404 /404.html;#遇到404错误则返回网站根目录下的404.html文件error_page 502 /502.html;#ERROR-PAGE-END………………}
nginx负载均衡与ip_hash
upstream nginx-test {#定义后端服务器组名字为nginx-testip_hash;#根据访问用户的IP进行hash分配,以便用户固定请求同一个后端服务器,可以解决session的问题。server 192.168.1.10:8080 weight=1; #weight越大,负载的权重就越大server 192.168.1.11:8080 weight=2 max_fails=3 fail_timeout=30s;server 192.168.1.12:8080 down;#down 表示单前的server临时不參与负载server 192.168.1.13:8080 backup;#其他全部的非backup机器宕机的时候启用}server{#listen 80;#server_name ranjuan.cn;………………location / {if (!-e $request_filename){proxy_pass http://nginx-test;}}………………}
这种nginx负载均衡其实属于http重定向负载均衡,nginx只负载按照一套规则进行流量转发,它并不真正知道后端目标服务器的真实负载水平是什么样子的,只要后端有响应就转发,后端一台服务器一旦崩溃流量就全部转移至另一个后端服务器。最好的负载均衡应该是这样后端服务器负载达到90%(或其他预设的一个临界值)就不再分配流量,如果所有后端负载都达到临界值则需要丢弃后来所有流量并给管理员发出警报!否则一台服务器崩溃可能带来雪崩。
发表评论