标签 nginx 下的文章

文章地址:koukousky

server {
    listen       80;#80和443端口同时监听
    listen       443 ssl;
    server_name  www.koukousky.com koukousky.com;
    index index.html index.htm index.php;
    root  /apps/koukousky;

    #ssl on;
    ssl_certificate    /etc/ssl/koukousky.com.pem;
    ssl_certificate_key   /etc/ssl/koukousky/koukousky.com.key;
    ssl_session_timeout 5m;
    #ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_ciphers 'kEECDH+ECDSA+AES128 kEECDH+ECDSA+AES256 kEECDH+AES128 kEECDH+AES256 kEDH+AES128 kEDH+AES256 DES-CBC3-SHA +SHA !aNULL !eNULL !LOW !kECDH !DSS !MD5 !RC4 !EXP !PSK !SRP !CAMELLIA !SEED !3DES';
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    //不是www过来的跳转到带www的域名
    if ($http_host !~ "^www.koukousky.com$") {
        rewrite  ^(.*)    http://www.koukousky.com$1 permanent;
    }
    //防盗链图片
    location ~* \.(gif|jpg|png|bmp|zip|pdf)$ {
        valid_referers none blocked *.koukousky.com;
        if ($invalid_referer) {
                return 403;
         }
    }
    //缓存图片
    location ~ .*\.(?:jpg|jpeg|gif|png|ico|cur|gz|svg)$
    {
        expires      7d;
    }
    //缓存js css
    location ~ .*\.(?:js|css)$
    {
        expires      7d;
    }
    }
    //隐藏index.php
    location / {
        if (!-e  $request_filename) {
                rewrite  ^/(.*)$  /index.php/$1  last;
                break;
        }

       index  index.php;

    }
    //解析php
    location ~ \.php {
        //如果是进程文件请换成 fastcgi_pass   unix:/tmp/php-cgi.sock;
        fastcgi_pass   127.0.0.1:9000;

        fastcgi_index  index.php;
        fastcgi_read_timeout 300;
        set $real_script_name $fastcgi_script_name;
        if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
                set $real_script_name $1;
                set $path_info $2;
        }
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param SCRIPT_NAME $real_script_name;
        fastcgi_param PATH_INFO $path_info;
        include        fastcgi_params;
    }
}

CentOS安装GeoIP

yum -y install nginx-module-geoip

yum 安装好后找到安装的模块文件
如果nginx是用yun安装的一般是安装到 /etc/nginx/modules/目录下

手动加入模块

在nginx.conf配置文件的头部载入模块和http是同一个级别的

load_module "modules/ngx_http_geoip_module.so";
load_module "modules/ngx_stream_geoip_module.so";
ps: load_module 不能放在events{} 的后面,放在后面重启nginx会报错

因为GeoIP是基于MaxMind 提供了数据库文件来读取地域信息的所以需要下载ip的地域文件。
这个数据库是二进制的,不能用文本编辑器打开,需要上面的 GeoIP 库来读取,下面提供下载地址。
country.dat.gz
city.dat.gz
解压之后到nginx目录的geoip文件夹中,然后在项目的http中配置

geoip_country /etc/nginx/geoip/GeoIP.dat;  #加载国家IP
geoip_city /etc/nginx/geoip/GeoLiteCity.dat; #加载城市IP

server中添加配置

#判断如果不是中国的就返回403;
if ($geoip_country_code != CN) {
    return 403;
}

这样就可以实现除中国以外的ip访问返回403.

一、描述
Ubuntu新搭建的lnmp环境测试环境是否正常,在网站根目录创建index.php,输出phpinfo,浏览器访问页面为空。

二、原因
原因是nginx无法正确的将 *.php 文件的地址传递给php-fpm去解析, 相当于php-fpm接收到了请求,但这请求却指向一个不存在的文件,于是返回空结果

三、解决
修改fastcgi_params

vim /etc/nginx/fastcgi_params

添加以下参数

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO       $fastcgi_script_name;

默认情况下contos7不带nginx的yum源
可以通过rpm添加yum源

rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

yum源添加完成之后就可以使用yum安装nginx了(yum可以自行解决依赖关系安装nginx)

yum -y install nginx

安装完成之后可以通过命令启动nginx和设置开启自动运行

systemctl start nginx
systemctl enable nginx

没有任何报错就说明nginx安装并启动成功
如果有错误,可在nginx错误日志中查看原因

/var/log/nginx/error.log

server {
    listen  80;
    server_name  home.zhouqq.com;
    root /www/zhouqq;
    index  index.html index.htm index.php;
    error_page  404              /404.html;
    location = /404.html {
        return 404 'Sorry, File not Found!';
    }
    error_page  500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html; # windows用户替换这个目录
    }
    location / {
        try_files $uri @rewrite;
    }
    location @rewrite {
        set $static 0;
        if  ($uri ~ \.(css|js|jpg|jpeg|png|gif|ico|woff|eot|svg|css\.map|min\.map)$) {
            set $static 1;
        }
        if ($static = 0) {
            rewrite ^/(.*)$ /index.php?s=/$1;
        }
    }
    location ~ /Uploads/.*\.php$ {
        deny all;
    }
    location ~ \.php/ {
       if ($request_uri ~ ^(.+\.php)(/.+?)($|\?)) { }
       fastcgi_pass 127.0.0.1:9000;
       include fastcgi_params;
       fastcgi_param SCRIPT_NAME     $1;
       fastcgi_param PATH_INFO       $2;
       fastcgi_param SCRIPT_FILENAME $document_root$1;
    }
    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
    location ~ /\.ht {
        deny  all;
    }
}

问题描述:

公司一台服务器硬盘被nginx日志撑满,于是 rm -f 删除占硬盘的log文件,那么问题来了,log文件消失了,但是 df -h 显示磁盘空间未释放;

找其原因:

在linux中,通过rm或者文件管理器删除文件将会从文件系统的目录结构上解除链接(unlink),然而如果文件是被打开的(有进程正在使用或者不断写入),那么进程将可以继续读取该文件,磁盘空间也会一直被占用无法释放,而我删除的nginx日志文件在删除的时候文件正在被使用;

解决办法:

1、需要清理日志等会不断写入的文件时,不要用rm删除文件,用 echo " " > ./error.log 清空日志文件,
2、如以上问题已出现,重启nginx服务。