lnmp平台菜鸟入门级笔记

时间:2023-03-17 22:30:34
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;

              }

       }

简单配置完毕如图所示: