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;

              }

       }

简单配置完毕如图所示:

lnmp平台菜鸟入门级笔记的更多相关文章

  1. LB(Load balance)负载均衡集群--{LVS-[NAT+DR]单实例实验+LVS+keeplived实验} 菜鸟入门级

    LB(Load balance)负载均衡集群 LVS-[NAT+DR]单实例实验 LVS+keeplived实验 LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一 ...

  2. Puppet基于Master/Agent模式实现LNMP平台部署

    前言 随着IT行业的迅猛发展,传统的运维方式靠大量人力比较吃力,运维人员面对日益增长的服务器和运维工作,不得不把很多重复的.繁琐的工作利用自动化处理.前期我们介绍了运维自动化工具ansible的简单应 ...

  3. LNMP平台搭建---PHP安装篇

    在前面三篇中,我们安装了Linux系统.Web服务器Nginx.MySQL数据库服务器,这篇就来将搭建动态网站的最后一步:PHP安装. Nginx服务器只能响应静态资源请求,对于动态资源请求就不行了, ...

  4. LNMP平台搭建---MySQL安装篇

    在前两篇中,安装了一个基本的Web服务器,但是只能提供静态网页查看,要做成动态网站,就必须要数据库或其他编程语言支持了,这里先介绍MySQL数据库的安装. MySQL是一个开源的数据库,在互联网行业应 ...

  5. LNMP平台搭建---Nginx安装篇

    在上一篇博文<LNMP平台搭建---Linux系统安装篇>中,我们安装了CentOS版本的Linux操作系统,现在,我们来安装一个Web服务器,大标题写着LNMP,其中的N就是Nginx, ...

  6. LNMP平台搭建---Linux系统安装篇

    在互联网网站开发领域,有一个名词,大家一定不陌生,那就是LAMP,经典的Web服务器环境,由Linux+Apache+MySQL+PHP组成,,后来,一个名叫Nginx的Web服务器开源出来了,因其更 ...

  7. 源码搭建lnmp平台

    lnmp平台是指利用linux操作系统,nginx服务器,mysql数据库和php语言搭建高性能web服务器,负载均衡器和邮件代理服务器. 原理图:‘

  8. docker:Dockerfile构建LNMP平台

    docker:Dockerfile构建LNMP平台   1.dockerfile介绍  Dockerfile是Docker用来构建镜像的文本文件,包含自定义的指令和格式.可以通过docker buil ...

  9. 脚本_部署LNMP平台

    #!bin/bash#功能:部署LNMP平台,实际运行脚本时,需要去除备注.#作者:liusingbonfunction menu {                //定义函数menu        ...

随机推荐

  1. webdynpro

    -------------------------------------------------------------------------------------WebDynpro For A ...

  2. js zTree的用法

    代码如下: <script type="text/javascript">    var reginTree = {    setting: {        view ...

  3. ARM9的中断控制器

    简要复习一下ARM9中断控制器的控制过程: 1.首先能识别触发的中断(对应中断源必须打开,然后查询当前中断状态寄存器),硬件会操控PC跳到中断向量入口(IRQ_HANDLE,硬件控制的只要是IRQ中断 ...

  4. 现在遇到一个问题,无法判断url是属于哪一个CDN

    解决的办法是到申请域名的网站上面去调用api获取域名的cname来确定

  5. OD调试16

    今天还是15的那个程序,但是呢,换一种方法去掉NAG窗口 用OD载入,暂停,查看调用的堆栈 先看最后一个    查看调用,下断点 往上看看,找到入口的地方,设下断.点,重载,运行,单步 通过单步发现 ...

  6. 1.2 ASSEMBLY LANGUAGE

    People are much happier moving up the ladder,socially or even technically.So our profession has move ...

  7. Launching the Debugger Automatically

    You can set up your application to start Visual Studio when you launch the application from Windows. ...

  8. Makefile拆分编写

    在实际开发项目中,我们通常将一个工程划分为多个文件夹,每个文件夹代表不能的功能,如:我的一个项目cpl,它分为两个文件夹:src和test.当在cpl文件夹中运行make的时候,它的一级目录都会自动运 ...

  9. linux 常见问题&解决方案

    Q1: 错误重现: linux下 用tar -zxf xxx.tar.bz2 报错: gzip: stdin: not in gzip format tar: Child returned statu ...

  10. Can only set Cookies for the current domain

    # -*- coding: utf-8 -*- """ Created on Mon Dec 12 14:35:49 2016 @author: yaru "& ...