s28 LNMP架构服务搭建
nginx-location使用
location语法
location使用的语法例子为:
location [=|~|~*|^~] uri{
对location语法列表说明。
|1ocation | [=|~|~*|^~] |uri |{..}.
|指令 |匹配标识。 |匹配的网站网址。|匹配URI后要执行的配置段。
上述语法中的URI部分是关键,这个URI可以是普通的字符串地址路径或者是正则表达式,当匹配成功则执行后面大括号里面的相关指令。正则表达式的前面还可以有~或~*等特殊的字符。
这两种特殊字符~或~*匹配的区别为:
“ ~ ” 用于区分天小写(大小写敏感)的匹配;~/images{}
“ ~* ” 用于不区分大小写的匹配。还可以用逻辑操作符!对上面的匹配取反,即 !~ 和!~* 。
“ ^~ ” 作用是在常规的字符串匹配检查之后,不做正则表达式的检查,即如果最明确的那个字符
实现配置
x
1
[root@www extra]# cat www.conf2
server {3
listen 80;4
server_name www.etiantian.org etiantian.org;5
root html/www;6
7
location / {8
return 401;9
}10
location = / {11
return 402;12
}13
14
location /documents/ {15
return 403;16
}17
location ^~ /images/ {18
return 404;19
20
}21
22
location ~* \.(gif|jpg|jpeg)$ {23
return 500;24
}25
access_log logs/access_www.log main ;26
}测试
1
1
1
小结
不用URI及特殊字符组合匹配顺序 匹配说明
第一名:“location = / {” 精确匹配/
第二名:“location ^~ /images/ {” 匹配常规字符串,不做正则匹配检查, 优先匹配路径
第三名:“location ~* \.(gif|jpg|jpeg)$ {” 正则匹配
第四名:“location /documents/ {” 匹配常规字符串,如果有正则则优先匹配正则。
第五名:“location / {” 所有location都不能匹配后的默认匹配。
nginx-rewrite短域名跳转
lewen.com ====>www.lewen.com
lewen.com 变换为 www.lewen.com
server {
listen 80;
server_name lewen.com;
rewrite ^/(.*) http://www.lewen.com/$1 permanent;
}
lewen.com/index.html ==== www.lewen.com/index.html
rewrite配置
15
15
1
[root@web01 extra]# cat www.conf2
server {3
listen 80;4
server_name etiantian.org;5
rewrite (^.*) http://www.etiantian.org/$1 permanent;6
}7
server {8
listen 80;9
server_name www.etiantian.org ;10
access_log logs/access_www.log main;11
location / {12
root html/www;13
index index.html index.htm;14
}15
}测试
44
44
1
[root@web01 extra]# curl -L etiantian.org/index.html2
web01 www.etiantian.org3
[root@web01 extra]# curl -Lv 、4
* About to connect() to etiantian.org port 80 (#0)5
* Trying 10.0.0.8... connected6
* Connected to etiantian.org (10.0.0.8) port 80 (#0)7
> GET /index.html HTTP/1.18
> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.21 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.29
> Host: etiantian.org10
> Accept: */*11
>12
< HTTP/1.1 301 Moved Permanently13
< Server: nginx/1.12.214
< Date: Tue, 27 Feb 2018 12:31:27 GMT15
< Content-Type: text/html16
< Content-Length: 18517
< Connection: keep-alive18
< Location: http://www.etiantian.org//index.html19
<20
* Ignoring the response-body21
* Connection #0 to host etiantian.org left intact22
* Issue another request to this URL: 'http://www.etiantian.org//index.html'23
* About to connect() to www.etiantian.org port 80 (#1)24
* Trying 10.0.0.8... connected25
* Connected to www.etiantian.org (10.0.0.8) port 80 (#1)26
> GET //index.html HTTP/1.127
> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.21 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.228
> Host: www.etiantian.org29
> Accept: */*30
>31
< HTTP/1.1 200 OK32
< Server: nginx/1.12.233
< Date: Tue, 27 Feb 2018 12:31:27 GMT34
< Content-Type: text/html35
< Content-Length: 2436
< Last-Modified: Mon, 12 Feb 2018 18:11:30 GMT37
< Connection: keep-alive38
< ETag: "5a81d8d2-18"39
< Accept-Ranges: bytes40
<41
web01 www.etiantian.org42
* Connection #1 to host www.etiantian.org left intact43
* Closing connection #044
* Closing connection #34
34
1
[root@web01 extra]# curl -I jd.com baidu.com taobao.com2
HTTP/1.1 302 Moved Temporarily3
Server: JengineD/1.7.2.14
Date: Tue, 27 Feb 2018 12:37:26 GMT5
Content-Type: text/html6
Content-Length: 1657
Location: http://www.jd.com8
Connection: keep-alive9
10
HTTP/1.1 200 OK11
Date: Tue, 27 Feb 2018 12:37:27 GMT12
Server: Apache13
Last-Modified: Tue, 12 Jan 2010 13:48:00 GMT14
ETag: "51-47cf7e6ee8400"15
Accept-Ranges: bytes16
Content-Length: 8117
Cache-Control: max-age=8640018
Expires: Wed, 28 Feb 2018 12:37:27 GMT19
Connection: Keep-Alive20
Content-Type: text/html21
22
HTTP/1.1 302 Found23
Server: Tengine24
Date: Tue, 27 Feb 2018 12:37:27 GMT25
Content-Type: text/html26
Content-Length: 25827
Connection: keep-alive28
Location: http://www.taobao.com/29
30
[root@web01 extra]# curl status.lewen.com31
Active connections: 132
server accepts handled requests33
84 84 13534
Reading: 0 Writing: 1 Waiting: 0
Nginx status
11
11
1
##status.conf2
server {3
listen 80;4
server_name status.etiantian.org;5
location / {6
stub_status on;7
access_log off;8
auth_basic "closed site";9
auth_basic_user_file /application/nginx/conf/htpasswd;10
}11
}登录验证
1
1
1
10
10
1
[root@web01 extra]# curl -u oldboy status.lewen.com2
Enter host password for user 'oldboy':3
<html>4
<head><title>403 Forbidden</title></head>5
<body bgcolor="white">6
<center><h1>403 Forbidden</h1></center>7
<hr><center>nginx/1.14.0</center>8
</body>9
</html>10
一直报错

错误日志
2
2
1
2018/09/02 19:31:29 [error] 2577#0: *44 open() "/application/nginx-1.14.0//conf/conf/htpasswd" failed (2: No such file or directory), client: 10.0.0.1, server: status.lewen.com, request: "GET / HTTP/1.1", host: "status.lewen.com"2
纠正修改配置文件

密码文件的路径或者直接用绝地路径
6
6
1
[root@web01 extra]# curl -u oldboy:123456 status.lewen.com2
Active connections: 1 3
server accepts handled requests4
46 46 80 5
Reading: 0 Writing: 1 Waiting: 0 6
本章回顾

Apache select和Nginx epoll模型区别形象比喻(面试常考);
虚拟主机概念及类型分类详解;
Nginx错误及访问日志及访问日志切割;
Nginx location介绍及配置实践;
Nginx Rewrite介绍及配置实践;
Nginx Web访问认证介绍及配置实践。
mysql二进制部署
#二进制安装MySQL-5.6.39
https://downloads.mysql.com/archives/community/1
1
1
安装报错
1
5
5
1
Installing MySQL system tables.../application/mysql/bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory2
3
4
原因:缺少libaio库文件 5
解决方法:yum install libaio* numactl -y 2
4
4
1
Installing MySQL system tables.../application/mysql/bin/mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory2
3
4
如果安装mysql出现了以上的报错信息.这是却少numactl这个时候如果是Centos就yum -y install numactl就可以解决这个问题了. 10
10
1
#####To start mysqld at boot time you have to copy2
#####support-files/mysql.server to the right place for your system3
#####mysql启动脚本 默认放在support-files/mysql.server 4
#####5
#####记得给MySQL设置个密码6
#####PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !7
#####To do so, start the server, then issue the following commands:8
#####9
##### /application/mysql/bin/mysqladmin -u root password 'new-password'10
##### /application/mysql/bin/mysqladmin -u root -h web01 password 'new-password'初始化的帮助信息
1
1
1

19
19
1
####7.复制启动脚本 授权2
cp /application/mysql/support-files/mysql.server /etc/init.d/mysqld3
chmod +x /etc/init.d/mysqld4
5
####8.修改启动脚本 和 mysql命令 中的路径6
sed -i 's#/usr/local/mysql#/application/mysql#g' /application/mysql/bin/mysqld_safe /etc/init.d/mysqld7
8
####9.复制 默认的配置文件 9
\cp /application/mysql/support-files/my-default.cnf /etc/my.cnf10
/etc/init.d/mysqld start11
12
[root@web01 ~]# /etc/init.d/mysqld start13
Starting MySQL.Logging to '/application/mysql/data/web01.err'.14
. SUCCESS! 15
16
####查看17
18
[root@web01 ~]# ss -lntup |grep 330619
tcp LISTEN 0 80 :::3306 :::* users:(("mysqld",1898,10))24
24
1
####10.PATH路径 添加到系统路径2
echo 'export PATH=/application/mysql/bin:$PATH' >>/etc/profile3
source /etc/profile4
which mysql5
6
7
[root@web01 ~]# which mysql8
/application/mysql/bin/mysql9
10
11
12
####11.加入开机自启动13
chkconfig --add mysqld14
chkconfig mysqld on15
16
####12.给MySQL root用户设置密码17
/application/mysql/bin/mysqladmin -u root password 'oldboy123'18
19
####13.重新登录MySQL数据库20
mysql -uroot -poldboy12321
22
####14.数据库基础框架23
#1.数据库 test mysql24
#2.表格注意
20
20
1
###故障2
##1./tmp权限3
##2.主机名解析 hosts解析 #ping 主机名4
##3.一步一步执行5
6
##7
##/application/mysql/bin/mysql8
##Welcome to the MySQL monitor. Commands end with ; or \g.9
##Your MySQL connection id is 110
##Server version: 5.5.49 MySQL Community Server (GPL)11
##12
##Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.13
##14
##Oracle is a registered trademark of Oracle Corporation and/or its15
##affiliates. Other names may be trademarks of their respective16
##owners.17
##18
##Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.19
##20
##mysql>mysql SQL语句
#查看系统中所有数据库
#show databases;
#查看系统中所有的用户
#使用某一个数据库
11
11
1
mysql> #查看当前都有啥2
mysql> show databases; ********3
+--------------------+4
| Database |5
+--------------------+6
| information_schema |7
| mysql |8
| performance_schema |9
| test |10
+--------------------+11
4 rows in set (0.07 sec)39
39
1
####初级 查看系列-开始2
##使用某一个数据库3
###相当于进入 mysql 数据库中 cd mysql ; cd test4
#use mysql5
6
##我想查看当前在哪? pwd 当前正在使用哪个数据库7
select database();8
+------------+9
| database() |10
+------------+11
| mysql |12
+------------+13
1 row in set (0.00 sec)14
15
##我是谁? 查看当前用户16
select user();17
+----------------+18
| user() |19
+----------------+20
| root@localhost |21
+----------------+22
1 row in set (0.00 sec)23
24
###当前系统都有什么用户? 他们可以在哪里登录? *****25
select user,host from mysql.user;26
+------+-----------+27
| user | host |28
+------+-----------+29
| root | 127.0.0.1 |30
| root | ::1 |31
| | localhost |32
| root | localhost |33
| | web01 |34
| root | web01 |35
+------+-----------+36
6 rows in set (0.02 sec)37
####初级 查看系列-结束38
###show databases;39
###select user,host from mysql.user;25
25
1
####初级 添加删除系列2
#创建数据库3
create database wordpress;4
#删除数据库5
drop database wordpress;6
7
8
#添加用户9
grant all on wordpress.* to 'wordpress'@'172.16.1.0/255.255.255.0' identified by '123456';10
11
grant all on wordpress.* to 'wordpress'@'172.16.1.0/255.255.255.0' identified by '123456';12
授权所有的权限, wordpress数据库所有的权限 给 wordpress用户 可以在172.16.1.0/255.255.255.0 网段登录数据库 这个用户的密码123456;13
14
#更新系统的权限表15
flush privileges; 16
17
18
19
###进行测试20
mysql -uwordpress -p12345621
22
mysql -uwordpress -p -h 172.16.1.823
24
#删除用户25
drop user wordpress@'172.16.1.8';16
16
1
[root@web01 ~]# mysql -uwordpress -p2
Enter password: 3
4
####前面创建用户时限制了访问ip 要想本地访问就得再创建一个5
ERROR 1045 (28000): Access denied for user 'wordpress'@'localhost' (using password: YES)6
7
8
####制定ip 登录9
[root@web01 ~]# mysql -uwordpress -h 172.16.1.8 -p10
Enter password: 11
Welcome to the MySQL monitor. Commands end with ; or \g.12
Your MySQL connection id is 2413
Server version: 5.6.41 MySQL Community Server (GPL)14
15
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.16
20
20
1
###1.查看都有什么数据库2
###2.查看都有什么用户3
###3.添加用户4
5
6
#help sql语句。7
8
#跳过授权表(不用密码登录)9
#/etc/init.d/mysqld restart --skip-grant-table10
11
#mysql 命令行12
#-u 指定用户13
#-p 指定密码(不要有空格)14
#-h 连接到某一台服务器15
16
17
#更改密码 mysqladmin -uroot -poldboy123 password '新的密码'18
19
20
db01上部署一个mysql5.6.393
3
1
yum install zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel curl-devel -y2
yum install freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel libxslt-devel -y3
rpm -qa zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel curl-devel freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel libxslt-devel 部署php
#解压PHP软件,进行编译安装,将程序安装到/application目录中,并且创建软链接
#安装其它相关程序---libmcrypt
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
yum -y install libmcrypt-devel mhash mcrypt
rpm -qa libmcrypt-devel mhash mcrypt
http://php.net/releases/
安装PHP过程
40
40
1
####编译配置2
3
4
tar xf php-5.5.32.tar.gz5
cd php-5.5.32 #----正式编译前也可以把这个软件安装上(libxslt*)6
7
./configure --prefix=/application/php-5.5.32 \8
--with-mysql=mysqlnd \9
--with-pdo-mysql=mysqlnd \10
--with-freetype-dir \11
--with-jpeg-dir \12
--with-png-dir \13
--with-zlib \14
--with-libxml-dir=/usr \15
--enable-xml \16
--disable-rpath \17
--enable-bcmath \18
--enable-shmop \19
--enable-sysvsem \20
--enable-inline-optimization \21
--with-curl \22
--enable-mbregex \23
--enable-fpm \24
--enable-mbstring \25
--with-mcrypt \26
--with-gd \27
--enable-gd-native-ttf \28
--with-openssl \29
--with-mhash \30
--enable-pcntl \31
--enable-sockets \32
--with-xmlrpc \33
--enable-soap \34
--enable-short-tags \35
--enable-static \36
--with-xsl \37
--with-fpm-user=www \38
--with-fpm-group=www \39
--enable-ftp \40
--enable-opcache=no35
35
1
编译过程2
3
##提示 如下内容 即成功4
Generating files5
configure: creating ./config.status6
creating main/internal_functions.c7
creating main/internal_functions_cli.c8
+--------------------------------------------------------------------+9
| License: |10
| This software is subject to the PHP License, available in this |11
| distribution in the file LICENSE. By continuing this installation |12
| process, you are bound by the terms of this license agreement. |13
| If you do not agree with the terms of this license, you must abort |14
| the installation process at this point. |15
+--------------------------------------------------------------------+16
17
Thank you for using PHP.18
19
config.status: creating php5.spec20
config.status: creating main/build-defs.h21
config.status: creating scripts/phpize22
config.status: creating scripts/man1/phpize.123
config.status: creating scripts/php-config24
config.status: creating scripts/man1/php-config.125
config.status: creating sapi/cli/php.126
config.status: creating sapi/fpm/php-fpm.conf27
config.status: creating sapi/fpm/init.d.php-fpm28
config.status: creating sapi/fpm/php-fpm.service29
config.status: creating sapi/fpm/php-fpm.830
config.status: creating sapi/fpm/status.html31
config.status: creating sapi/cgi/php-cgi.132
config.status: creating ext/phar/phar.133
config.status: creating ext/phar/phar.phar.134
config.status: creating main/php_config.h35
config.status: executing default commands ln -s /application/mysql/lib/libmysqlclient.so.18 /usr/lib64/ #可以不创建
touch ext/phar/phar.phar
make && make install
ln -s /application/php-5.5.32/ /application/php
44
44
1
安装过程2
3
Generating phar.php4
Generating phar.phar5
PEAR package PHP_Archive not installed: generated phar will require PHP's phar extension be enabled.6
clicommand.inc7
pharcommand.inc8
invertedregexiterator.inc9
directorygraphiterator.inc10
directorytreeiterator.inc11
phar.inc12
13
Build complete.14
15
[root@web01 php-5.5.32]# make install16
Installing PHP CLI binary: /application/php-5.5.32/bin/17
Installing PHP CLI man page: /application/php-5.5.32/php/man/man1/18
Installing PHP FPM binary: /application/php-5.5.32/sbin/19
Installing PHP FPM config: /application/php-5.5.32/etc/20
Installing PHP FPM man page: /application/php-5.5.32/php/man/man8/21
Installing PHP FPM status page: /application/php-5.5.32/php/php/fpm/22
Installing PHP CGI binary: /application/php-5.5.32/bin/23
Installing PHP CGI man page: /application/php-5.5.32/php/man/man1/24
Installing build environment: /application/php-5.5.32/lib/php/build/25
Installing header files: /application/php-5.5.32/include/php/26
Installing helper programs: /application/php-5.5.32/bin/27
program: phpize28
program: php-config29
Installing man pages: /application/php-5.5.32/php/man/man1/30
page: phpize.131
page: php-config.132
Installing PEAR environment: /application/php-5.5.32/lib/php/33
[PEAR] Archive_Tar - installed: 1.4.034
[PEAR] Console_Getopt - installed: 1.4.135
[PEAR] Structures_Graph- installed: 1.1.136
[PEAR] XML_Util - installed: 1.3.037
[PEAR] PEAR - installed: 1.10.138
Wrote PEAR system config file at: /application/php-5.5.32/etc/pear.conf39
You may want to add: /application/php-5.5.32/lib/php to your php.ini include_path40
/home/oldboy/tools/php-5.5.32/build/shtool install -c ext/phar/phar.phar /application/php-5.5.32/bin41
ln -s -f phar.phar /application/php-5.5.32/bin/phar42
Installing PDO headers: /application/php-5.5.32/include/php/ext/pdo/43
[root@web01 php-5.5.32]# echo $?44
017
17
1
####安装完2
3
#复制php.ini配置文件4
5
[root@web01 php-5.5.32]# cp /home/oldboy/tools/php-5.5.32/php.ini-production /application/php-5.5.32/lib/php.ini6
7
8
#复制php-fpm配置文件9
[root@web01 php-5.5.32]# cd /application/php-5.5.32/etc/10
[root@web01 etc]# ls11
pear.conf php-fpm.conf.default12
[root@web01 etc]# cp php-fpm.conf.default php-fpm.conf13
[root@web01 etc]# ll14
total 5215
-rw-r--r-- 1 root root 1332 Feb 27 22:53 pear.conf16
-rw-r--r-- 1 root root 22609 Feb 27 22:56 php-fpm.conf17
-rw-r--r-- 1 root root 22609 Feb 27 22:53 php-fpm.conf.default15
15
1
#### 启动2
3
[root@web01 etc]# /application/php-5.5.32/sbin/php-fpm -t4
[27-Feb-2018 22:56:53] NOTICE: configuration file /application/php-5.5.32/etc/php-fpm.conf test is successful5
6
[root@web01 etc]# /application/php-5.5.32/sbin/php-fpm7
[root@web01 etc]# ss -lntup |grep 90008
tcp LISTEN 0 16384 127.0.0.1:9000 *:* users:(("php-fpm",129733,7),("php-fpm",129734,0),("php-fpm",129735,0))9
10
11
12
13
####添加到系统命令14
15
[root@web01 etc]# ln -s /application/php-5.5.32/sbin/php-fpm /usr/bin/LNMP搭建网站前测试。
测试nginx与php配合是否成功
php与MySQL配合是否成功
部署网站
测试nginx与php
15
15
1
server {2
listen 80;3
server_name blog.etiantian.org;4
root html/blog;5
index index.php index.html index.htm;6
location ~ .*\.(php|php5)?$ {7
fastcgi_pass 127.0.0.1:9000;8
fastcgi_index index.php;9
include fastcgi.conf;10
}11
}12
13
14
15
echo '<?php phpinfo();?>' >/application/nginx/html/blog/test_info.php
测试php与MySQL
11
11
1
test_mysql.php2
3
<?php4
//$link_id=mysql_connect('主机名','用户','密码');5
$link_id=mysql_connect('172.16.1.51','wordpress','123456') or mysql_error();6
if($link_id){7
echo "mysql successful by oldboy ! \n";8
}else{9
echo mysql_error();10
}11
?>部署博客
https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz
chown -R www.www *

root@web01 nginx]# chown -R www.www html/
[root@web01 nginx]# ll

1
1
1
[root@web01 blog]# rm -f .maintenance负载均衡与反向代理
区别图例

负载均衡 LVS 中小型公司用的不多 (配置麻烦)
实际部署

5
5
1
HOSTNAME IP 说明2
lb01 10.0.0.5 Nginx主负载均衡器3
lb02 10.0.0.6 Nginx辅负载均衡器4
web01 10.0.0.8 web01服务器5
web02 10.0.0.7 web02服务器[root@web01 ~]# /application/nginx/sbin/nginx -V
nginx version: nginx/1.12.2
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --user=www --group=www --prefix=/application/nginx-1.12.2 --with-http_stub_status_module --with-http_ssl_module
34
34
1
#web01 web02 nginx.conf2
worker_processes 1;3
events {4
worker_connections 1024;5
}6
http {7
include mime.types;8
default_type application/octet-stream;9
sendfile on;10
keepalive_timeout 65;11
12
log_format main '$remote_addr - $remote_user [$time_local] "$request" '13
'$status $body_bytes_sent "$http_referer" '14
'"$http_user_agent" "$http_x_forwarded_for"';15
server {16
listen 80;17
server_name www.lewen.com;18
location / {19
root html/www;20
index index.html index.htm;21
}22
access_log logs/access_www.log main;23
}24
server {25
listen 80;26
server_name bbs.lewen.com;27
location / {28
root html/bbs;29
index index.html index.htm;30
}31
access_log logs/access_bbs.log main;32
}33
34
}8
8
1
tree /application/nginx/html/ -Ld 12
3
for name in www bbs blog ;do echo "`hostname` $name.etiantian.org" > /application/nginx/html/$name/oldboy.html; done4
5
[root@web01 ~]# for name in www bbs blog ;do cat /application/nginx/html/$name/oldboy.html; done6
web01 www.etiantian.org7
web01 bbs.etiantian.org8
web01 blog.etiantian.org9
9
1
#web01 web02环境准备完成2
[root@lb01 ~]# curl 10.0.0.8/oldboy.html3
web01 bbs.etiantian.org4
[root@lb01 ~]# curl 10.0.0.7/oldboy.html5
web02 bbs.etiantian.org6
[root@lb01 ~]# curl -H Host:www.etiantian.org 10.0.0.8/oldboy.html7
web01 www.etiantian.org8
[root@lb01 ~]# curl -H Host:www.etiantian.org 10.0.0.7/oldboy.html9
web02 www.etiantian.org下面错误的配置
22
22
1
#lb012
worker_processes 1;3
events {4
worker_connections 1024;5
}6
http {7
include mime.types;8
default_type application/octet-stream;9
sendfile on;10
keepalive_timeout 65;11
12
upstream server_pools { 13
server 10.0.0.7:80 weight=1;14
server 10.0.0.8:80 weight=1;15
}16
server { 17
listen 80;18
server_name www.etiantian.org;19
location / {20
proxy_pass http://server_pools;21
}22
}
36
36
1
验证故障:2
wireshark 进行抓包观察3
[root@lb01 conf]# cat nginx.conf4
worker_processes 1;5
events {6
worker_connections 1024;7
}8
http {9
include mime.types;10
default_type application/octet-stream;11
sendfile on;12
keepalive_timeout 65;13
14
upstream server_pools { 15
server 10.0.0.7:80 weight=1;16
server 10.0.0.8:80 weight=1;17
}18
server { 19
listen 80;20
server_name bbs.lewen.com;21
location / {22
proxy_pass http://server_pools;23
proxy_set_header Host $host;24
}25
}26
server { 27
listen 80;28
server_name www.lewen.com;29
location / {30
proxy_pass http://server_pools;31
proxy_set_header Host $host;32
}33
}34
}35
36
proxy_set_header 修改反向代理 向后面发出请求的时候的 请求头的信息正确的配置
34
34
1
让web服务器记录真实的用户ip地址2
worker_processes 1;3
events {4
worker_connections 1024;5
}6
http {7
include mime.types;8
default_type application/octet-stream;9
sendfile on;10
keepalive_timeout 65;11
12
upstream server_pools { 13
server 10.0.0.7:80 weight=1;14
server 10.0.0.8:80 weight=1;15
}16
server { 17
listen 80;18
server_name bbs.lewen.com;19
location / {20
proxy_pass http://server_pools;21
proxy_set_header Host $host;22
proxy_set_header X-Forwarded-For $remote_addr;23
}24
}25
server { 26
listen 80;27
server_name www.lewen.com;28
location / {29
proxy_pass http://server_pools;30
proxy_set_header Host $host;31
proxy_set_header X-Forwarded-For $remote_addr;32
} 33
}34
}测试
24
24
1
[root@lb01 conf]# curl -H Host:www.lewen.com 10.0.0.6/oldboy.html2
web02 www.lewen.com 3
[root@lb01 conf]# curl -H Host:www.lewen.com 10.0.0.6/oldboy.html4
web01 www.lewen.com 5
[root@lb01 conf]# curl -H Host:www.lewen.com 10.0.0.6/oldboy.html6
web02 www.lewen.com 7
[root@lb01 conf]# curl -H Host:www.lewen.com 10.0.0.6/oldboy.html8
web01 www.lewen.com 9
[root@lb01 conf]# curl -H Host:bbs.lewen.com 10.0.0.6/oldboy.html10
web02 bbs.lewen.com 11
[root@lb01 conf]# curl -H Host:bbs.lewen.com 10.0.0.6/oldboy.html12
web01 bbs.lewen.com 13
[root@lb01 conf]# curl -H Host:bbs.lewen.com 10.0.0.6/oldboy.html14
web02 bbs.lewen.com 15
[root@lb01 conf]# curl -H Host:bbs.lewen.com 10.0.0.6/oldboy.html16
web01 bbs.lewen.com 17
[root@lb01 conf]# curl -H Host:bbs.lewen.com 10.0.0.5/oldboy.html18
web01 bbs.lewen.com 19
[root@lb01 conf]# curl -H Host:bbs.lewen.com 10.0.0.5/oldboy.html20
web02 bbs.lewen.com 21
[root@lb01 conf]# curl -H Host:www.lewen.com 10.0.0.5/oldboy.html22
web01 www.lewen.com 23
[root@lb01 conf]# curl -H Host:www.lewen.com 10.0.0.5/oldboy.html24
web02 www.lewen.com 1
1
1
yum install -y keepalived给LVS用的


20
20
1
#keepalive配置文件详解2
3
global_defs {4
router_id LB015
}6
7
vrrp_instance VI_1 {8
state MASTER9
interface eth010
virtual_router_id 5111
priority 15012
advert_int 113
authentication {14
auth_type PASS15
auth_pass 111116
}17
virtual_ipaddress {18
10.0.0.3/24 dev eth0 label eth0:119
}20
}



keepalive基于 服务器 ,除非网段了,电断了,才会飘
Nginx 关了不会飘
if [ `netstat -lntup|grep nginx|wc -l` -ne 1 ];then
/etc/init.d/keepalived stop
fi
7
7
1
[root@lb01 conf]# cat /server/scripts/check_lb.sh2
#!/bin/bash3
4
if [ `ps -ef |grep nginx|grep -v grep` -eq 0 ];then5
/etc/init.d/keepalived stop6
fi7
[root@lb01 conf]# chmod +x /server/scripts/check_lb.sh

8
8
1
vrrp_script check_nginx {2
script "/server/scripts/check_lb01.sh"3
interval 24
weight 25
}6
7
8
注意 {} 的空格 注意格式标准正确30
30
1
[root@lb01 keepalived]# cat keepalived.conf2
global_defs {3
router_id LB014
}5
6
vrrp_script check_lb {7
script "/server/scripts/check_lb.sh"8
interval 29
weight 210
}11
12
vrrp_instance VI_1 {13
state MASTER14
interface eth015
virtual_router_id 5116
priority 15017
advert_int 118
authentication {19
auth_type PASS20
auth_pass 111121
}22
virtual_ipaddress {23
10.0.0.3/24 dev eth0 label eth0:124
}25
track_script {26
check_lb27
}28
29
}30
http://www.dedecms.com/
使用db01上面的数据库
把用户的上传目录挂载到 nfs01




本文来自博客园,作者:元贞,转载请注明原文链接:https://www.cnblogs.com/yuleicoder/p/9600424.html
浙公网安备 33010602011771号