nginx 一些事儿

2018-12-05  本文已影响0人  胡乱唱歌ing

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;
}

7.nginx流量控制

https://legolasng.github.io/2017/08/27/nginx-rate-limiting/#%E9%AB%98%E7%BA%A7%E9%85%8D%E7%BD%AE%E7%A4%BA%E4%BE%8B

上一篇 下一篇

猜你喜欢

热点阅读