linux学习笔记-第二十四课-LNMP-Nginx高级配置(三)

一、用户认证

用户认证功能是利用Apache的工具htpasswd生成的密钥,所以需要安装Apache的这个工具即可,我们用yum来安装就可以。

[[email protected] ~]# yum install -y httpd-tools
[[email protected] ~]# htpasswd -cm /usr/local/nginx/conf/.htpasswd mydiscuz
New password:
Re-type new password:
Adding password for user mydiscuz
[[email protected] ~]# cat /usr/local/nginx/conf/.htpasswd
mydiscuz:$apr1$ejPLa15T$kuyykf8at2I77oogZ0kUz1

修改配置,主要是修改server模块

location / {
    auth_basic "Closed";
    auth_basic_user_file .htpasswd; <== 这里要注意加密文件的路径
}

二、静态文件缓存

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
     expires      30d;
     access_log off;
     }

location ~ .*\.(js|css)?$
    {
     expires      12h;
     access_log off;
     }

三、防盗链

location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|xls)$ {   
                valid_referers none blocked server_names  *.taobao.com 
*.baidu.com *.google.com *.google.cn *.soso.com ; 
                if ($invalid_referer) {
                        return 403;
#                       rewrite ^/ http://www.example.com/nophoto.gif;
                        }
                }

四、域名重定向

 if ($host != ‘bbs.a.com‘ ){
        rewrite ^/(.*)$ http://bbs.a.com/$1 permanent;
    }

五 、日志切割

因为Nginx没有自动切割日志功能,所以需要手动编辑脚本

编写脚本:vim  /usr/local/sbin/logrotate.sh  //加入

#! /bin/bash
datedir=`date +%Y%m%d`
/bin/mkdir  /home/logs/$datedir >/dev/null 2>&1
/bin/mv /home/logs/*.log /home/logs/$datedir
/bin/kill -HUP `cat /var/run/nginx.pid`

六、设置日志记录的内容

日志格式化
    log_format main ‘$remote_addr - $remote_user [$time_local] $request ‘
                    ‘"$status" $body_bytes_sent "$http_referer" ‘
                    ‘"$http_user_agent" "$http_x_forwarded_for"‘;

log_format main1 ‘$proxy_add_x_forwarded_for - $remote_user [$time_local] ‘
                     ‘"$request" $status $body_bytes_sent ‘
                     ‘"$http_referer" "$http_user_agent"‘;  //此日志格式为,ip不仅记录代理的ip还记录远程客户端真实IP。

七、访问控制

限制只让某个ip访问
    allow          219.232.244.234;
    deny           all;

禁止某个IP或者IP段访问站点的设置方法

首先建立下面的配置文件放在nginx的conf目录下面,命名为deny.ip   
cat  deny.ip
deny 192.168.1.11;
deny 192.168.1.123;
deny 10.0.1.0/24;

在nginx的配置文件nginx.conf中加入:
include deny.ip;

重启一下nginx的服务:/usr/local/nginx/sbin/nginx  reload 就可以生效了。

deny.ip 的格式中也可以用deny all;
如果你想实现这样的应用,除了几个IP外,其他全部拒绝,
那需要你在deny.ip 中这样写
allow 1.1.1.1;
allow 1.1.1.2;
deny all;

有时候会根据目录来限制php解析:
location ~ .*(diy|template|attachments|forumdata|attachment|image)/.*\.php$
{
        deny all;
}

八、使用 user_agent 控制客户端访问
location /
{
    if ($http_user_agent ~ ‘bingbot/2.0|MJ12bot/v1.4.2|Spider/3.0|YoudaoBot|Tomato|Gecko/20100315‘){
            return 403;
    }
}

九、Nginx代理

server {
            listen 80;
            server_name aaa.com;

location / {
                proxy_pass      http://2.2.2.2/;
                proxy_set_header Host   $host;
                proxy_set_header X-Real-IP      $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            }
#            access_log  /home/logs/aaa_access.log combined;
        }

时间: 2024-10-24 11:30:01

linux学习笔记-第二十四课-LNMP-Nginx高级配置(三)的相关文章

linux学习笔记-第二十二课-LNMP环境搭建(一)

一.LNMP环境搭建前的准备 LNMP就是Linux系统下Nginx+MySQL+PHP这种网站服务器架构,所以需要下载mysql,php,与nginx这三套软件. MySQL : 32位 :http://syslab.comsenz.com/downloads/linux/mysql-5.1.40-linux-i686-icc-glibc23.tar.gz 64位 :http://syslab.comsenz.com/downloads/linux/mysql-5.1.40-linux-x86

linux学习笔记-第十四课-日常管理(一)

一.w和uptime [[email protected] ~]# w  20:29:01 up 28 min,  1 user,  load average: 0.00, 0.00, 0.00 USER     TTY      FROM              [email protected]   IDLE   JCPU   PCPU WHAT mylinux  pts/0    192.168.1.105    20:12    0.00s  0.32s  0.26s sshd: my

linux学习笔记-第二十六课-Samba与squid

一.Samba Samba是SMB的一种实现方法,主要用来实现Linux系统的文件和打印服务.Linux用户通过配置使用Samba服务器可以实现与Windows 用户的资源共享.守护进程smbd和nmbd是Samba的核心,在全部时间内运行.nmbd程序使得通过企图计算机可以浏览Linux服务器. 1.Samba的安装 我们只通过yum安装 [[email protected] ~]# yum install -y samba 2.Samba配置 [[email protected] ~]# v

linux学习笔记-第二十八课-MySQL主从复制,读写分离配置

MySQL主从配置 配置准备将要配置的数据库进行主从同步,主从的服务器上都要有同一个数据库 一.配置mysql主服务器 [[email protected] ~]# vim /etc/my.cnf .................................... log-bin=mysql-bin     <== 打开日志格式 .................................... server-id=1           <== 主从标记 ............

linux学习笔记-第二十五课-NFS与FTP

一.NFS NFS是Network File System的缩写,即网络文件系统. NFS服务器安装 1.NFS服务器主要的软件是rpcbind(rhel 5中的版本叫portmap)和nfs-utils rpcbind:是RPC主程序,负责NFS端口的监听. nfs-utils:是NFS主程序 我们只有通过yum或者RPM来安装就可以 2.启动NFS [[email protected] ~]# service nfs start 启动 NFS 服务:                     

linux学习笔记-第十九课-LAMP之 mysql (四)

mysql日常操作指令 1 )mysql管理员密码的更改,mysql安装完毕后,管理员root的密码默认为空,需要进行修改 格式 :mysqladmin -u root password '新密码' 示例 : [[email protected] ~]# mysqladmin -u root password '123456' [[email protected] ~]# mysql -u root -p # 这时候就需要使用密码登陆mysql Enter password:          

linux学习笔记-第十八课-LAMP之环境搭建(一)

一.LAMP搭建前的准备 LAMP是四套软件的缩写,分别指的是L-Linux,A-Apache,M-Mysql,P-php,利用这四套软件搭建的web的运行环境. 搭建前需要需要下载好软件 apache http://syslab.comsenz.com/downloads/linux/httpd-2.2.16.tar.gz mysql  32位 :http://syslab.comsenz.com/downloads/linux/mysql-5.1.40-linux-i686-icc-glib

Linux学习笔记(十四)--命令学习(vi的基本使用)

本博客中linux大部分内容是参考:鸟哥的私房菜     如各位有需要的,请参考:http://vbird.dic.ksu.edu.tw/linux_basic/linux_basic.php 上面我们已经知道了大部分Linux基本内容 1.查看系统信息 2.文件与目录查看 3.文件创建 4.文件权限属性 5.用户创建与删除 6.压缩包的打包与解包 现在要进行文件编辑等操作的学习. Linux 中,绝大部分的配置文件都是以 ASCII 的纯文本形态存在,因此利用简单的文字编辑软件就能够修改设定了

linux学习笔记-第十五课-日常管理(二)

一.抓包工具,分析工具 抓包工具 : tcpdump 格式 : tcpdump [-AennqX] [-i 接口] [-w 储存档名] [-c 次数] [-r 档案] [所欲撷取的封包数据格式] 常用选项 : -A :封包的内容以 ASCII 显示,通常用来捉取 WWW 的网页封包资料.    -e :使用资料连接层 (OSI 第二层) 的 MAC 封包数据来显示:    -nn:直接以 IP 及 port number 显示,而非主机名与服务名称    -q :仅列出较为简短的封包信息,每一行