1.设置php脚本执行的有效时间
简单描述下一个完整的http请求到PHP处理的流程
客户端发起http请求,nginx收到请求后通过fastcgi协议把请求转发给php-fpm处理,php-fpm把请求分配给一个空闲的php进程处理业务逻辑,最终返回给nginx,由nginx返回给客户端。php-fpm是管理PHP进程的,因此,配置php执行有效时间需要对php-fpm进行配置,还有配置nginx的fastcgi的超时时间。
注意:所以单单在php程序里面设置set_time_limit是无效的
以下是一个完整配置php脚本执行有效时间的过程
1.1 修改nginx 的配置文件 location ~ .php(.*)$ {} 添以一下代码
fastcgi_connect_timeout 300;
fastcgi_read_timeout 300;
fastcgi_send_timeout 300;
1.2修改php-fpm配置文件
request_terminate_timeout = 300s
2.nginx配置文件目录的权限,提高安全性
很多时候我们的程序都是通过git/svn进行版本控制的,所以程序的目录中通常会出现一些.svn .git这些隐藏的文件 这些文件是危险的说不定会被黑客所利用进而威胁到网站的安全性,还有就是我们的模版文件也必须是通过控制器才能加载的,但是如果用户直接访问模版文件绕过控制器呢?解决这些安全隐患可通过nginx配置实现
#禁止访问.svn .git .cvs
location ~ .*.(svn|git|cvs) {
deny all;
}
#禁止访问视图文件,必须通过控制器才能加载视图
location ~ /themes/default/views
{
return 404;
}
3.防盗链
location ~* \.(gif|jpg|png|jpeg)$ {
expires 30d;
valid_referers none blocke *.baidu.com *.google.com; www.test.com
if ($invalid_referer) {
rewrite ^/ http://www.test.com/404.jpg;
#return 404;
}
}
4.重定向rewrite 可解决跨域问题
rewrite ^/test/(.*) http://xn.test.com/$1;
5.反向代理
#swoole 与ningx配合使用静态nginx处理,php转向swoole服务
location / {
proxy_http_version 1.1;
proxy_set_header Connection "keep-alive";
proxy_set_header X-Real-IP $remote_addr;
if (!-e $request_filename) {
proxy_pass http://192.168.233.129:9501;
}
}
#websocket反向代理
location /wss {
proxy_pass https://websocket;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
}
upstream websocket {
server 127.0.0.1:8888;
}
6.反向代理与负载均衡
#定义上游服务器,并且设置超时时间
upstream service_com {
server 172.16.233.1:80 max_fails=2 fail_timeout=10s weight=10;
server 127.0.0.1:8080 max_fails=2 fail_timeout=10s weight=10;
# ip_hash; 是否使用IPhash
}
server{
listen 80;
server_name xn.test.com;
location / {
proxy_connect_timeout 5s;
proxy_read_timeout 5s;
proxy_send_timeout 5s;
proxy_next_upstream error timeout;
proxy_next_upstream_timeout 10s;
proxy_next_upstream_tries 2;
proxy_pass http://service_com;
add_header upstream_addr $upstream_addr;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server
{
listen 8080;
#listen [::]:80 default_server ipv6only=on;
server_name xn.test.com;
index index.html index.htm index.php;
root /home/wwwroot/xn.test.com;
#error_page 404 /404.html;
# Deny access to PHP files in specific directory
#location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }
include enable-php.conf;
location /nginx_status
{
stub_status on;
access_log off;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
location ~ /.well-known {
allow all;
}
location ~ /\.
{
deny all;
}
access_log /home/wwwlogs/access.log;
}
网友评论