• lnmp平台菜鸟入门级笔记


                  LNMP平台搭建

    Mysql安装 

    MySQL安装

    回复收藏
     
    1 下载MySQL数据库l到/usr/local/src/
    [root@xin tmp]# cd /usr/local/src/
    [root@xin src]#  wget http://mirrors.sohu.com/mysql/MySQL-5.1/mysql-5.1.73-linux-i686-glibc23.tar.gz 
    [root@xin src]# ls     
    mysql-5.1.73-linux-i686-glibc23.tar.gz  
    [root@xuexi src]# du -sh mysql-5.1.73-linux-i686-glibc23.tar.gz
    124M    mysql-5.1.73-linux-i686-glibc23.tar.gz

    2 解压
    [root@xin src]# tar zxvf mysql-5.1.73-linux-i686-glibc23.tar.gz
    [root@xin src]# ls
    mysql-5.1.73-linux-i686-glibc23        
    mysql-5.1.73-linux-i686-glibc23.tar.gz 
    [root@xin src]# du -sh mysql-5.1.73-linux-i686-glibc23
    410M    mysql-5.1.73-linux-i686-glibc23

    3 把解压完的数据移动到/usr/local/mysql
    [root@xin src]# mv mysql-5.1.73-linux-i686-glibc23 /usr/local/mysql

    4 建立mysql用户
    [root@xin src]# useradd -s /sbin/nologin -M mysql

    5 初始化数据库
    [root@xin src]# cd /usr/local/mysql/
    [root@xin mysql]# ls
    bin      data  include         lib  mysql-test  scripts  sql-bench
    COPYING  docs  INSTALL-BINARY  man  README      share    support-files
    [root@xin mysql]# mkdir -p /data/mysql(独立一个/data/分区)
    [root@xin mysql]# chown -R mysql /data/mysql/
    [root@xin mysql]# ./scripts/mysql_install_db  --user=mysql --datadir=/data/mysql/
    --user 定义数据库的所属主, --datadir 定义数据库安装到哪里,建议放到大空间的分区上,这个目录需要自行创建。
    [root@xuexi mysql]# echo $? (结果为0,说明运行结果正常)
    0

    6 拷贝配置文件
    [root@xuexi mysql]# ls
    bin      data  include         lib  mysql-test  scripts  sql-bench
    COPYING  docs  INSTALL-BINARY  man  README      share    support-files
    [root@xuexi mysql]# cd support-files/
    [root@xuexi support-files]# ls
    binary-configure   my-huge.cnf             mysqld_multi.server
    config.huge.ini    my-innodb-heavy-4G.cnf  mysql-log-rotate
    config.medium.ini  my-large.cnf            mysql.server
    config.small.ini   my-medium.cnf           ndb-config-2-node.ini
    magic              my-small.cnf
    [root@xuexi support-files]# cp my-large.cnf /etc/my.cnf

    7 拷贝启动脚本文件并修改其属性
    [root@xuexi support-files]# ls
    binary-configure   my-huge.cnf             mysqld_multi.server
    config.huge.ini    my-innodb-heavy-4G.cnf  mysql-log-rotate
    config.medium.ini  my-large.cnf            mysql.server
    config.small.ini   my-medium.cnf           ndb-config-2-node.ini
    magic              my-small.cnf
    [root@xuexi support-files]# ls /etc/init.d/
    abrt-ccpp         cgred       kdump         nfslock      restorecond  smartd
    abrtd             cpuspeed    killall       ntpd         rngd         sshd
    abrt-oops         crond       lvm2-lvmetad  ntpdate      rpcbind      sssd
    acpid             cups        lvm2-monitor  numad        rpcgssd      sysstat
    atd               functions   mdmonitor     oddjobd      rpcidmapd    udev-post
    auditd            haldaemon   messagebus    portreserve  rpcsvcgssd   winbind
    autofs            halt        netconsole    postfix      rsyslog      ypbind
    blk-availability  ip6tables   netfs         psacct       sandbox
    certmonger        iptables    network       quota_nld    saslauthd
    cgconfig          irqbalance  nfs           rdisc        single
    [root@xuexi support-files]# cp mysql.server /etc/init.d/mysqld
    [root@xuexi support-files]# vi /etc/init.d/mysqld
    # in the /etc/my.cnf, ~/.my.cnf or other MySQL configuration files.
    # If you change base dir, you must also change datadir. These may get
    # overwritten by settings in the MySQL configuration files.
    basedir=/usr/local/mysql
    datadir=/data/mysql/
    [root@xuexi support-files]#ll /etc/init.d/mysqld  (查看权限)
    -rwxr-xr-x. 1 root root 12511 4月   8 17:00 /etc/init.d/mysqld

    9 把启动脚本加入系统服务项,并设定开机启动,启动mysql
    [root@xuexi support-files]# chkconfig --add mysqld
    [root@xuexi support-files]# chkconfig mysqld on
    [root@xuexi support-files]# chkconfig --list |grep mysqld
    mysqld          0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭
    [root@xuexi support-files]# /etc/init.d/mysqld start
    Starting MySQL....                                         [确定]

    10 检查mysql是否启动
    [root@xuexi support-files]# ps aux |grep mysql
    root      1922  0.0  0.1   6684  1264 pts/0    S    17:06   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql/ --pid-file=/data/mysql//xuexi.pid
    mysql     2046  2.9  4.3 390536 44656 pts/0    Sl   17:06   0:02 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql/ --user=mysql --log-error=/data/mysql//xuexi.err --pid-file=/data/mysql//xuexi.pid --socket=/tmp/mysql.sock --port=3306
    root      2072  0.0  0.0   6052   764 pts/0    S+   17:07   0:00 grep mysql
    [root@xuexi support-files]# netstat -lnp|grep mysql
    tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      2046/mysqld
    unix  2      [ ACC ]     STREAM     LISTENING     20155  2046/mysqld         /tmp/mysql.sock

    [root@xuexi htdocs]# cat /usr/local/mysql/bin/mysqlbug |grep -i confi  (查看MySQL编译)
    # This is set by configure
    CONFIGURE_LINE="./configure  '--prefix=/usr/local/mysql' '--localstatedir=/usr/local/mysql/data' '--libexecdir=/usr/local/mysql/bin' '--with-comment=MySQL Community Server (GPL)' '--with-server-suffix=' '--enable-thread-safe-client' '--enable-local-infile' '--enable-assembler' '--with-pic' '--with-fast-mutexes' '--with-client-ldflags=-static' '--with-mysqld-ldflags=-static' '--with-zlib-dir=bundled' '--with-big-tables' '--with-ssl' '--with-readline' '--with-embedded-server' '--with-partition' '--with-innodb' '--without-ndbcluster' '--with-archive-storage-engine' '--with-blackhole-storage-engine' '--with-csv-storage-engine' '--without-example-storage-engine' '--with-federated-storage-engine' '--with-extra-charsets=complex' 'CC=/usr/local/gcc-4.3.2/bin/gcc -static-libgcc' 'CFLAGS=-g -O3 -march=i686' 'CXX=/usr/local/gcc-4.3.2/bin/gcc -static-libgcc' 'CXXFLAGS=-g -O3 -march=i686'"


    [root@xuexi htdocs]# cp /usr/local/src/php-5.4.45/php.ini-
    php.ini-development(开发的)  php.ini-production(生产的)
    [root@xuexi etc]# cp /usr/local/src/php-5.4.45/php.ini-production /usr/local/php/etc/php.ini

    PHP安装

    5.下载php:wget http://am1.php.net/distributions/php-5.3.27.tar.gz

    6..解压:tar -xvzf php-5.3.27.tar.gz

    7.提前安装依赖软件

    yum install -y libxml2-devel

    yum install -y openssl openssl-devel

    yum install -y bzip2 bzip2-devel

    yum install -y libpeng libpng-devel

    yum install -y libpng libpng-devel

    yum install -y freetype freetype-devel

    yum install -y epel-release

    yum install -y libmcrypt-devel

    yum install -y libtool-ltdl-devel

     

    编译安装 

     ./configure

    --prefix=/usr/local/php

    --with-config-file-path=/usr/local/php/etc

    --enable-fpm

    --with-fpm-user=php-fpm

    --with-fpm-group=php-fpm

    --with-mysql=/usr/local/mysql

    --with-mysql-sock=/tmp/mysql.sock

    --with-libxml-dir

    --with-gd

    --with-jpeg-dir

    --with-png-dir

    --with-freetype-dir

    --with-iconv-dir

    --with-zlib-dir

    --with-mcrypt

    --enable-soap

    --enable-gd-native-ttf

    --enable-ftp

    --enable-mbstring

    --enable-exif

    --enable-zend-multibyte

    --disable-ipv6

    --with-pear

    --with-curl

    --with-openssl

    make && make install

     

    8.修改php配置文件

    cp php.ini-production /usr/local/php/etc/php.ini

    vim /usr/local/php/etc/php-fpm.conf

    [global]

    pid = /usr/local/php/var/run/php-fpm.pid

    error_log = /usr/local/php/var/log/php-fpm.log

    [www]

    listen = /tmp/php-fcgi.sock

    user = php-fpm

    group = php-fpm

    pm = dynamic

    pm.max_children = 50

    pm.start_servers = 20

    pm.min_spare_servers = 5

    pm.max_spare_servers = 35

    pm.max_requests = 500

    rlimit_files = 1024

    Php-fpm.conf 文件为php进程配置文件。Aphache调启用php处理时启用的php子进程都是有这个文件控制。

    详解配置文件于nginx 虚拟主机有关

    PHP配置文件

    /usr/local/php/sbin/php -fpm -t 测试

    /usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini -y /usr/local/php/etc/php-fpm.conf -t

    重要目录:

    /usr/local/php/sbin/php-fpm

    /usr/local/php/etc/php-fpm.conf

    /usr/local/php/etc/php.ini

    启动php-fpm

    /usr/local/php/sbin/php-fpm

    /usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini -y /usr/local/php/etc/php-fpm.conf -t

    关闭:php-fpm

    重启:kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`

    php-fpm.conf 管理服务配置文件。 php.ini全局配置。

    php-fpm.conf配置文件

    1.清空原有配置文件。

    >/usr/loca/php/etc/php-fpm.conf

    2.写入模板文件

    Vim /usr/local/php/etc/php-fpm.conf

    [global]

    pid = /usr/local/php/var/run/php-fpm.pid

    error_log = /usr/local/php/var/log/php-fpm.log  错误日志存放区。

    [www]可定义。不通站点定义可以定义不同的php进程池。

    listen = /tmp/www.sock  监听的不通端口或sock 配置必须和nginx 虚拟主机配置文件中配置相同。不然会提示502错误。

    user = php-fpm          

    group = php-fpm

    Listen.owner = nobody  因为5,3版本之后的版本socket没有权限所以需要我们定义一下。

    Listen.group = nobody

    pm = dynamic   动态形式启动。 可以配置为静态,如static建议配置为dynamic

    pm.max_children = 50  动态最大启动50个子进程。

    pm.start_servers = 20  默认开始启动20个

    pm.min_spare_servers = 5 空闲时最小启动5个

    pm.max_spare_servers = 35  空闲最大启动35个。

    pm.max_requests = 500   每一个子进程,生命周期内最多可以接受35个请求自动销毁。

    rlimit_files = 1024 每个子进程打开多少个文件句柄。

    slowlog = /tmp/www_slow.log 脚本执行追踪日志存放路径。

    Reguest_slowlog_timeout = 1 超过1s记录

    php_admin_value[open_basedir]=/data/www/:/tmp/

    添加性能追踪日志。如在slowlog = /tmp/www_slow.log

                          Reguest_slowlog_timeout = 1 脚本执行超过1s 就去记录日志在/tmp/www_slow.log 这个名字 自定义即可,每一个池子都可以添加不同的日志追踪机制。

    Apache可以定义open_basedir nginx下也可以定义open_basedir目录。如:php_admin_value[open_basedir]=/data/www/:/tmp/  把执行php的用户限定在指定目录下,来缩小权限访问范围来达到安全的目的。

    注意php5.4版本中定义的默认tmp/sock文件为只读,没有执行权限。如果没有定义listen.owner那么那个nginx调用的时候就没有权限。所以我们的需要定义listen.owner=nobody listen.group=nobody

     

    检查配置:/usr/local/php/sbin/php-fpm -t

     

    配置启动:cp /usr/local/src/php-5.3.27/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

    chmod 755 /etc/init.d/php-fpm

    service php-fpm start

    设置开机启动:

    chkconfig php-fpm on

    ps aux |grep php-fpm

     

    安装nginx

    Nginx.cof 详解http://www.ha97.com/5194.html

    下载nginx

    wget http://nginx.org/download/nginx-1.4.4.tar.gz

    解压

    tar zxvf nginx-1.4.4.tar.gz

     

     

    提前安装pcre 组件。

     yum install -y pcre-devel

    配置编译

    cd nginx-1.4.4

    ./configure

    --prefix=/usr/local/nginx

    --with-http_realip_module

    --with-http_sub_module

    --with-http_gzip_static_module

    --with-http_stub_status_module  

    --with-pcre

    make && make install

    编写nginx启动脚本,并加入系统服务。

    vim /etc/init.d/nginx

    #!/bin/bash

    # chkconfig: - 30 21

    # description: http service.

    # Source Function Library

    . /etc/init.d/functions

    # Nginx Settings

    NGINX_SBIN="/usr/local/nginx/sbin/nginx"

    NGINX_CONF="/usr/local/nginx/conf/nginx.conf"

    NGINX_PID="/usr/local/nginx/logs/nginx.pid"

    RETVAL=0

    prog="Nginx"

    start() {

            echo -n $"Starting $prog: "

            mkdir -p /dev/shm/nginx_temp

            daemon $NGINX_SBIN -c $NGINX_CONF

            RETVAL=$?

            echo

            return $RETVAL

    }

    stop() {

            echo -n $"Stopping $prog: "

            killproc -p $NGINX_PID $NGINX_SBIN -TERM

            rm -rf /dev/shm/nginx_temp

            RETVAL=$?

            echo

            return $RETVAL

    }

     

    reload(){

            echo -n $"Reloading $prog: "

            killproc -p $NGINX_PID $NGINX_SBIN -HUP

            RETVAL=$?

            echo

            return $RETVAL

    }

     

    restart(){

            stop

            start

    }

    configtest(){

        $NGINX_SBIN -c $NGINX_CONF -t

        return 0

    }

    case "$1" in

      start)

            start

            ;;

      stop)

            stop

            ;;

      reload)

            reload

            ;;

      restart)

            restart

            ;;

      configtest)

            configtest

            ;;

      *)

            echo $"Usage: $0 {start|stop|reload|restart|configtest}"

            RETVAL=1

    esac

    exit $RETVAL

     

     

    保存退出更改权限。

    chmod 755 /etc/init.d/nginx

    chkconfig --add nginx

    chkconfig nginx on

    更改nginx配置

    > /usr/local/nginx/conf/nginx.conf

    vim /usr/local/nginx/conf/nginx.conf

    写入如下内容:

    user nobody nobody;

    worker_processes 2;

    error_log /usr/local/nginx/logs/nginx_error.log crit;

    pid /usr/local/nginx/logs/nginx.pid;

    worker_rlimit_nofile 51200;

    events

    {

        use epoll;

        worker_connections 6000;

    }

    http

    {

        include mime.types;

        default_type application/octet-stream;

        server_names_hash_bucket_size 3526;

        server_names_hash_max_size 4096;

        log_format combined_realip '$remote_addr $http_x_forwarded_for [$time_local]'

        '$host "$request_uri" $status'

        '"$http_referer" "$http_user_agent"';

        sendfile on;

        tcp_nopush on;

        keepalive_timeout 30;

        client_header_timeout 3m;

        client_body_timeout 3m;

        send_timeout 3m;

        connection_pool_size 256;

        client_header_buffer_size 1k;

        large_client_header_buffers 8 4k;

        request_pool_size 4k;

        output_buffers 4 32k;

        postpone_output 1460;

        client_max_body_size 10m;

        client_body_buffer_size 256k;

        client_body_temp_path /usr/local/nginx/client_body_temp;

        proxy_temp_path /usr/local/nginx/proxy_temp;

        fastcgi_temp_path /usr/local/nginx/fastcgi_temp;

        fastcgi_intercept_errors on;

        tcp_nodelay on;

        gzip on;

        gzip_min_length 1k;

        gzip_buffers 4 8k;

        gzip_comp_level 5;

        gzip_http_version 1.1;

        gzip_types text/plain application/x-javascript text/css text/htm application/xml;

    server

    {

        listen 80;

        server_name localhost;

        index index.html index.htm index.php;

        root /usr/local/nginx/html;

     

        location ~ .php$ {

            include fastcgi_params;

            fastcgi_pass unix:/tmp/php-fcgi.sock;

            fastcgi_index index.php;

            fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;

        }

     

    }

    }

    保存配置后,先检验一下配置文件是否有错误存在:

    /usr/local/nginx/sbin/nginx  -t

    如果只有一个站点那就无需配置虚拟站点。如果多站点需要将红色字体部分去除,在最后加入include vhosts/*.conf;  (指定虚拟主机的.conf站点配置文件 需要在/usr/local/nginx/conf/ 下创建vhosts目录 在创建虚拟主机站点配置文件如:默认配置文件:default.conf ,及其他站点。默认情况下第一个默认站点禁止访问。)

    配置如下:vim default.conf

    添加server部分

     

    server

    {

        listen 80 default_server;

        server_name localhost;

        index index.html index.htm index.php;

        root /tmp/1233;  

        deny all;

       

    }

    由于默认让其无法访问,所以没有必要配置php解析,删除php解析部分,设置默认访问站点为tmp/1233.并设置其站点目录 为deny all 禁止访问。并创建1233目录 mkdir /tmp/1233

    除了默认站点,我配置一下 下一个站点 如域名为test.com 的站点test.conf

    Vim test.conf

    server

    {

        listen 80;

        server_name test.com;

        index index.html index.htm index.php;

        root /data/www;

     

        location ~ .php$ {

            include fastcgi_params;

            fastcgi_pass 127.0.0.1:9000;

            fastcgi_index index.php;

            fastcgi_param SCRIPT_FILENAME /data/www$fastcgi_script_name;

        }

     

    }

    保存退出即可。注意网站更目录我没配置的是/data/www  监控为:127.0.0.1:9000 这里可以自定义选择fastcgi_pass unix:/tmp/www.sock; 次出配置必须和php-fpm.conf 进程配置文件配置一样,否则报错502.  注意:每个站点都可单独指定不同的php运行进程数。需要在php-fpm.conf文件中添加。在虚拟站点文件中指定即可。

    502错误

    502 报错1.定义nginx虚拟主机中监听端口或sock路径配置错误。默认为 127.0.0.1 保持它与php.fpm.conf文件中配置一样。

    502 权限问题:版本问题报错502 ,默认sock文件没有执行权限需要在虚拟主机配置文件grup 项后添加:listen.owner = nobody listen.group = nobody

     

     

    启动nginx:

    service nginx start

    ps aux |grep nginx

    检查配置文件 重启安装discuz测试 ok

    1.nginx 用户认证

    虚拟主机配置文件中添加:

    location ~ .*admin.php$ {

            auth_basic "aminglinux auth";

            auth_basic_user_file /usr/local/nginx/conf/.htpasswd;

            include fastcgi_params;

            fastcgi_pass unix:/tmp/www.sock;

            fastcgi_index index.php;

            fastcgi_param SCRIPT_FILENAME /data/www$fastcgi_script_name;

    }

    设置密码用户添加密码

    /ls /usr/local/apache2/bin2/bin/htpasswd 工具创建

    如果没有yum install htpasswd -y 安装后设置。

    htpasswd -c /usr/local/nginx/conf/.htpasswd aming

    New password: 设置密码回车即可。

    登录直接下载。

    添加配置文件中加载php项-蓝色字体 ,即可解决php解析问题。

    2.在虚拟站点配置文件中加入:

    if ($host != 'test.com')

        {

            rewrite ^/(.*)$ http://test.com/$1 permanent;

    }

    保存即可。

    配置完成后如下所示:

    server

    {

        listen 80;

        server_name test.com www.test.com www.aaa.com;

        if ($host != 'test.com')

        {

            f ($host != 'test.com')

        {

            rewrite ^/(.*)$ http://test.com/$1 permanent;

        }rewrite ^/(.*)$ http://test.com/$1 permanent;

        }

        index index.html index.htm index.php;

        root /data/www;

        location ~ .*admin.php$ {

            auth_basic "aminglinux auth";

            auth_basic_user_file /usr/local/nginx/conf/.htpasswd;

            include fastcgi_params;

            fastcgi_pass unix:/tmp/www.sock;

            fastcgi_index index.php;

            fastcgi_param SCRIPT_FILENAME /data/www$fastcgi_script_name;

    }

        location ~ .php$ {

            include fastcgi_params;

            fastcgi_pass unix:/tmp/www.sock;

            fastcgi_index index.php;

            fastcgi_param SCRIPT_FILENAME /data/www$fastcgi_script_name;

    }

    302 301 参考文档:http://ask.apelearn.com/question/4840

    查看权重百度site:www.aaa.com

    2.Nginx配置不记录指定文件类型的日志

    Nginx 主配置文件中有:

    log_format aming '$remote_addr $http_x_forwarded_for [$time_local]'

     '$host "$request_uri" $status'

     '"$http_referer" "$http_user_agent"';项

     log_format 日志格式为log_format

     日志名字aming 可自定义。

     $remote_addr 远程ip

     forwarded_for 代理的ip

     [$time_local]' 时间。服务器里请求开始写入本地的时间,请求发生时间有前有后,所以会时间顺序前后错乱。

     $http_referer  $http_user_agent 之前提到过apache

    修改部分:虚拟主机配置文件中:location标签之前加:

     access_log /tmp/access.log aming;

     location ~ .*.(gif|jpg|jpeg|png|bmg|swf)$

       {

            access_log off;

        }

       loccess_log /tmp/access.log aming;cation ~ (static|cache)

       {

            access_log off;

    }

    不想记录那些日志都可自定义匹配。保存退出 -t 检测,-s reload加载一下。测试ok

    Nginx 日志切割

    不通apache有切割工具,nginx需要写脚本进行切割。

    vim  /usr/local/sbin/nginx_logrotate.sh

    #!bin/bash

    d=`date -d "-1 day" +%F`

    [ -d /tmp/nginx_log ] || mkdir /tmp/nginx_log

    mv /tmp/access.log /tmp/nginx_log/$d.log

    /etc/init.d/nginx reload >/dev/null

    cd /tmp/nginx_log/

    gzip -f $d.log

    保存退出即可。

    sh -x /usr/local/sbin/nginx_logrotate.sh

    ls /tmp/nginx_log/ 列出日志压缩文件。

    最后写一个计划任务:每天0点0分执行 即可。

    3.Nginx 静态文件缓存。即缓存过期时间

    同样使用location 标签

    在虚拟主机配置文件中location中添加 expires xxh/d等如:

    Vim test.com

        location ~ .*.(gif|jpg|jpeg|png|bmg|swf)$

       {

            access_log off;

            expires 15d; 设置gif|jpg|jpeg|png|bmg|swf文件缓存时间为15天。

        }

       location ~ .(js|css)

        {   access_log off;

            expires 2h; 设置以js /css结尾的文件缓存时间为2小时。

         }

    如测试成功

         curl -x127.0.0.1:80 'http://test.com/static/image/common/online_admin.gif' -I

         查看最大缓存时间。

    4.Ngin 设置防盗链

    也是在location 中设置

    location 中加入

    valid_referers none blocked *.test.com *.aaa.com *.wyl.com;

            if ($invalid_referer)

            {

               return 403;

             }

    解释:*.test.com *.aaa.com *.wyl.com; 域名白名单,只有这些域名的网站可以使用test.com图片等。

    最终配置如下:location中的条件可以随便添加。

        location ~ .*.(gif|jpg|jpeg|png|bmg|swf|flv|rar|zip|gz|bz2)$

       {

            access_log off;

            expires 15d;

            valid_referers none blocked *.test.com *.aaa.com *.wyl.com;

            if ($invalid_referer)

            {

               return 403;

             }

        }

    保存退出加载后测试

      

    1.Nginx 访问控制

    根据ip设置访问规则

    方法一

    根据局部设置可在location 模块中设置想要的限制条件目录

    在其后加入allow 192.168.2.192;

               Deny all; (白名单设置)

    保存退出即可,如果针对全局可以直接写个Dney 127.0.0.1; 黑名单设置

                                          Dney 192.168.2.0/24; 后面的allow可以省略,如果针对,nginx 不区分allow 与Deny all 的前后顺序而apache不同,它是区分前后顺序的。

    测试:curl -x192.168.2.192:80 test.com/admin.php -I 进行测试 符合要求。

    方法二:在nginx的conf目录下建立deny.ip配置文件

    写入:deny 192.168.1.11;

          deny 192.168.1.23;

          deny 192.168.1.2;

    或者写:allow 192.168.1.101;

            allow 1.1.1.2;

            aeny all;

    其次在虚拟主机配置文件中加入:include deny.ip;

    报存,重新加载即可。

    Nginx 禁止指定user_agent

    服务器压力过大的情况下或者被一些垃圾搜索引擎抓取,访问,这样就会耗费我们php资源,所以我们可以禁止有道,bin 360等 搜索引擎访问。

    配置: 在虚拟主机配置文件中同样在location 中配置:

    Location /

    {

    if ($http_user_agent ~* 'baidu|sougou|360')

         {

        return 403;         

         }  

    }

    保存退出即可,也可直接去掉location /{}标签,直接if(){} 设置即可如果所示:

    上面只是以百度,搜狗,360为例,~*不区分大小写匹配。

    测试:curl -A "lobaidu" -x192.168.2.192:80 test.com/forum.php -I

    2.nginx代理解释

    参考文档:http://www.itnpc.com/news/web/146111097157413.html

    conf目录下 新建vim prosy.conf文件并写入配置内容如下

    vim prosy.conf

    server {

        listen 80;

        server_name www.baidu.com;

         location / {

         proxy_pass http://61.135.169.121;

        #proxy_set_header Host $host;

          }

    } 保存退出。没有负载均衡,配置负载均衡需要指定地址池。如:proxy_pass http://www_server_poos; 负载均衡后面再说。

    解释:通过prosxy_pass 功能把用户的请求交由上面反向代理upstream定义的www_server_pools服务池处理。服务池名字可以自定义,如aming

    安装:dig命令获取域名解析到那些ip。如 dig www.baidu.com  获取百度其他ip地址安装yum install bind*

    获取后添加到prosxy_pass 后面。如上所述。

    简单负载均衡:配置负载均衡地址池子需要添加upstram xxx(自定义)设置ip或者ip加端口

    如:upstream aming {

       server 61.135.169.125:80;

       server 61.135.169.121;

    }  proxy_pass http://61.135.169.121;改为proxy_pass http://aming; 指向地址池。后面继续添加proxy_set_header Host $host;项目不然会502错误。

    配置如下:

     vim prosy.conf

      upstream aming {

       server 61.135.169.125:80;

       server 61.135.169.121:80;

                    }

    server {

        listen 80;

        server_name www.baidu.com;

         location / {

         proxy_pass http://aming;

         proxy_set_header Host $host;

                  }

           }

    简单配置完毕如图所示:

  • 相关阅读:
    二维数组的使用及其内存结构
    一维数组的练习
    数组的默认初始化
    数组
    完数
    break与continue
    乘法表及质数的输出法
    嵌套循环的使用
    Elasticsearch索引和查询性能调优
    elasticsearch数据冷热分离、数据冷备
  • 原文地址:https://www.cnblogs.com/wylhome/p/6064994.html
Copyright © 2020-2023  润新知