nginx-location使用
location语法
location使用的语法例子为:
location [=|~|~*|^~] uri{
对location语法列表说明。
|1ocation | [=|~|~*|^~] |uri |{..}.
|指令 |匹配标识。 |匹配的网站网址。|匹配URI后要执行的配置段。
上述语法中的URI部分是关键,这个URI可以是普通的字符串地址路径或者是正则表达式,当匹配成功则执行后面大括号里面的相关指令。正则表达式的前面还可以有~或~*等特殊的字符。
这两种特殊字符~或~*匹配的区别为:
“ ~ ” 用于区分天小写(大小写敏感)的匹配;~/images{}
“ ~* ” 用于不区分大小写的匹配。还可以用逻辑操作符!对上面的匹配取反,即 !~ 和!~* 。
“ ^~ ” 作用是在常规的字符串匹配检查之后,不做正则表达式的检查,即如果最明确的那个字符
实现配置
x
1
[root@www extra]# cat www.conf
2
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.conf
2
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.html
2
web01 www.etiantian.org
3
[root@web01 extra]# curl -Lv 、
4
* About to connect() to etiantian.org port 80 (#0)
5
* Trying 10.0.0.8... connected
6
* Connected to etiantian.org (10.0.0.8) port 80 (#0)
7
> GET /index.html HTTP/1.1
8
> 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.2
9
> Host: etiantian.org
10
> Accept: */*
11
>
12
< HTTP/1.1 301 Moved Permanently
13
< Server: nginx/1.12.2
14
< Date: Tue, 27 Feb 2018 12:31:27 GMT
15
< Content-Type: text/html
16
< Content-Length: 185
17
< Connection: keep-alive
18
< Location: http://www.etiantian.org//index.html
19
<
20
* Ignoring the response-body
21
* Connection #0 to host etiantian.org left intact
22
* 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... connected
25
* Connected to www.etiantian.org (10.0.0.8) port 80 (#1)
26
> GET //index.html HTTP/1.1
27
> 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.2
28
> Host: www.etiantian.org
29
> Accept: */*
30
>
31
< HTTP/1.1 200 OK
32
< Server: nginx/1.12.2
33
< Date: Tue, 27 Feb 2018 12:31:27 GMT
34
< Content-Type: text/html
35
< Content-Length: 24
36
< Last-Modified: Mon, 12 Feb 2018 18:11:30 GMT
37
< Connection: keep-alive
38
< ETag: "5a81d8d2-18"
39
< Accept-Ranges: bytes
40
<
41
web01 www.etiantian.org
42
* Connection #1 to host www.etiantian.org left intact
43
* Closing connection #0
44
* Closing connection #
34
34
1
[root@web01 extra]# curl -I jd.com baidu.com taobao.com
2
HTTP/1.1 302 Moved Temporarily
3
Server: JengineD/1.7.2.1
4
Date: Tue, 27 Feb 2018 12:37:26 GMT
5
Content-Type: text/html
6
Content-Length: 165
7
Location: http://www.jd.com
8
Connection: keep-alive
9
10
HTTP/1.1 200 OK
11
Date: Tue, 27 Feb 2018 12:37:27 GMT
12
Server: Apache
13
Last-Modified: Tue, 12 Jan 2010 13:48:00 GMT
14
ETag: "51-47cf7e6ee8400"
15
Accept-Ranges: bytes
16
Content-Length: 81
17
Cache-Control: max-age=86400
18
Expires: Wed, 28 Feb 2018 12:37:27 GMT
19
Connection: Keep-Alive
20
Content-Type: text/html
21
22
HTTP/1.1 302 Found
23
Server: Tengine
24
Date: Tue, 27 Feb 2018 12:37:27 GMT
25
Content-Type: text/html
26
Content-Length: 258
27
Connection: keep-alive
28
Location: http://www.taobao.com/
29
30
[root@web01 extra]# curl status.lewen.com
31
Active connections: 1
32
server accepts handled requests
33
84 84 135
34
Reading: 0 Writing: 1 Waiting: 0
Nginx status
11
11
1
##status.conf
2
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.com
2
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.com
2
Active connections: 1
3
server accepts handled requests
4
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 directory
2
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 directory
2
3
4
如果安装mysql出现了以上的报错信息.这是却少numactl这个时候如果是Centos就yum -y install numactl就可以解决这个问题了.
10
10
1
#####To start mysqld at boot time you have to copy
2
#####support-files/mysql.server to the right place for your system
3
#####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/mysqld
3
chmod +x /etc/init.d/mysqld
4
5
####8.修改启动脚本 和 mysql命令 中的路径
6
sed -i 's#/usr/local/mysql#/application/mysql#g' /application/mysql/bin/mysqld_safe /etc/init.d/mysqld
7
8
####9.复制 默认的配置文件
9
cp /application/mysql/support-files/my-default.cnf /etc/my.cnf
10
/etc/init.d/mysqld start
11
12
[root@web01 ~]# /etc/init.d/mysqld start
13
Starting MySQL.Logging to '/application/mysql/data/web01.err'.
14
. SUCCESS!
15
16
####查看
17
18
[root@web01 ~]# ss -lntup |grep 3306
19
tcp LISTEN 0 80 :::3306 :::* users:(("mysqld",1898,10))
24
24
1
####10.PATH路径 添加到系统路径
2
echo 'export PATH=/application/mysql/bin:$PATH' >>/etc/profile
3
source /etc/profile
4
which mysql
5
6
7
[root@web01 ~]# which mysql
8
/application/mysql/bin/mysql
9
10
11
12
####11.加入开机自启动
13
chkconfig --add mysqld
14
chkconfig mysqld on
15
16
####12.给MySQL root用户设置密码
17
/application/mysql/bin/mysqladmin -u root password 'oldboy123'
18
19
####13.重新登录MySQL数据库
20
mysql -uroot -poldboy123
21
22
####14.数据库基础框架
23
#1.数据库 test mysql
24
#2.表格
注意
20
20
1
###故障
2
##1./tmp权限
3
##2.主机名解析 hosts解析 #ping 主机名
4
##3.一步一步执行
5
6
##
7
##/application/mysql/bin/mysql
8
##Welcome to the MySQL monitor. Commands end with ; or g.
9
##Your MySQL connection id is 1
10
##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 its
15
##affiliates. Other names may be trademarks of their respective
16
##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 test
4
#use mysql
5
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 -p123456
21
22
mysql -uwordpress -p -h 172.16.1.8
23
24
#删除用户
25
drop user wordpress@'172.16.1.8';
16
16
1
[root@web01 ~]# mysql -uwordpress -p
2
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 -p
10
Enter password:
11
Welcome to the MySQL monitor. Commands end with ; or g.
12
Your MySQL connection id is 24
13
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-table
10
11
#mysql 命令行
12
#-u 指定用户
13
#-p 指定密码(不要有空格)
14
#-h 连接到某一台服务器
15
16
17
#更改密码 mysqladmin -uroot -poldboy123 password '新的密码'
18
19
20
db01上部署一个mysql5.6.39
3
3
1
yum install zlib-devel libxml2-devel libjpeg-devel libjpeg-turbo-devel curl-devel -y
2
yum install freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel libxslt-devel -y
3
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.gz
5
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=no
35
35
1
编译过程
2
3
##提示 如下内容 即成功
4
Generating files
5
configure: creating ./config.status
6
creating main/internal_functions.c
7
creating main/internal_functions_cli.c
8
+--------------------------------------------------------------------+
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.spec
20
config.status: creating main/build-defs.h
21
config.status: creating scripts/phpize
22
config.status: creating scripts/man1/phpize.1
23
config.status: creating scripts/php-config
24
config.status: creating scripts/man1/php-config.1
25
config.status: creating sapi/cli/php.1
26
config.status: creating sapi/fpm/php-fpm.conf
27
config.status: creating sapi/fpm/init.d.php-fpm
28
config.status: creating sapi/fpm/php-fpm.service
29
config.status: creating sapi/fpm/php-fpm.8
30
config.status: creating sapi/fpm/status.html
31
config.status: creating sapi/cgi/php-cgi.1
32
config.status: creating ext/phar/phar.1
33
config.status: creating ext/phar/phar.phar.1
34
config.status: creating main/php_config.h
35
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.php
4
Generating phar.phar
5
PEAR package PHP_Archive not installed: generated phar will require PHP's phar extension be enabled.
6
clicommand.inc
7
pharcommand.inc
8
invertedregexiterator.inc
9
directorygraphiterator.inc
10
directorytreeiterator.inc
11
phar.inc
12
13
Build complete.
14
15
[root@web01 php-5.5.32]# make install
16
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: phpize
28
program: php-config
29
Installing man pages: /application/php-5.5.32/php/man/man1/
30
page: phpize.1
31
page: php-config.1
32
Installing PEAR environment: /application/php-5.5.32/lib/php/
33
[PEAR] Archive_Tar - installed: 1.4.0
34
[PEAR] Console_Getopt - installed: 1.4.1
35
[PEAR] Structures_Graph- installed: 1.1.1
36
[PEAR] XML_Util - installed: 1.3.0
37
[PEAR] PEAR - installed: 1.10.1
38
Wrote PEAR system config file at: /application/php-5.5.32/etc/pear.conf
39
You may want to add: /application/php-5.5.32/lib/php to your php.ini include_path
40
/home/oldboy/tools/php-5.5.32/build/shtool install -c ext/phar/phar.phar /application/php-5.5.32/bin
41
ln -s -f phar.phar /application/php-5.5.32/bin/phar
42
Installing PDO headers: /application/php-5.5.32/include/php/ext/pdo/
43
[root@web01 php-5.5.32]# echo $?
44
0
17
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.ini
6
7
8
#复制php-fpm配置文件
9
[root@web01 php-5.5.32]# cd /application/php-5.5.32/etc/
10
[root@web01 etc]# ls
11
pear.conf php-fpm.conf.default
12
[root@web01 etc]# cp php-fpm.conf.default php-fpm.conf
13
[root@web01 etc]# ll
14
total 52
15
-rw-r--r-- 1 root root 1332 Feb 27 22:53 pear.conf
16
-rw-r--r-- 1 root root 22609 Feb 27 22:56 php-fpm.conf
17
-rw-r--r-- 1 root root 22609 Feb 27 22:53 php-fpm.conf.default
15
15
1
#### 启动
2
3
[root@web01 etc]# /application/php-5.5.32/sbin/php-fpm -t
4
[27-Feb-2018 22:56:53] NOTICE: configuration file /application/php-5.5.32/etc/php-fpm.conf test is successful
5
6
[root@web01 etc]# /application/php-5.5.32/sbin/php-fpm
7
[root@web01 etc]# ss -lntup |grep 9000
8
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.php
2
3
<?php
4
//$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 !
";
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.conf
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
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 1
2
3
for name in www bbs blog ;do echo "`hostname` $name.etiantian.org" > /application/nginx/html/$name/oldboy.html; done
4
5
[root@web01 ~]# for name in www bbs blog ;do cat /application/nginx/html/$name/oldboy.html; done
6
web01 www.etiantian.org
7
web01 bbs.etiantian.org
8
web01 blog.etiantian.org
9
9
1
#web01 web02环境准备完成
2
[root@lb01 ~]# curl 10.0.0.8/oldboy.html
3
web01 bbs.etiantian.org
4
[root@lb01 ~]# curl 10.0.0.7/oldboy.html
5
web02 bbs.etiantian.org
6
[root@lb01 ~]# curl -H Host:www.etiantian.org 10.0.0.8/oldboy.html
7
web01 www.etiantian.org
8
[root@lb01 ~]# curl -H Host:www.etiantian.org 10.0.0.7/oldboy.html
9
web02 www.etiantian.org
下面错误的配置
22
22
1
#lb01
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 www.etiantian.org;
19
location / {
20
proxy_pass http://server_pools;
21
}
22
}
36
36
1
验证故障:
2
wireshark 进行抓包观察
3
[root@lb01 conf]# cat nginx.conf
4
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.html
2
web02 www.lewen.com
3
[root@lb01 conf]# curl -H Host:www.lewen.com 10.0.0.6/oldboy.html
4
web01 www.lewen.com
5
[root@lb01 conf]# curl -H Host:www.lewen.com 10.0.0.6/oldboy.html
6
web02 www.lewen.com
7
[root@lb01 conf]# curl -H Host:www.lewen.com 10.0.0.6/oldboy.html
8
web01 www.lewen.com
9
[root@lb01 conf]# curl -H Host:bbs.lewen.com 10.0.0.6/oldboy.html
10
web02 bbs.lewen.com
11
[root@lb01 conf]# curl -H Host:bbs.lewen.com 10.0.0.6/oldboy.html
12
web01 bbs.lewen.com
13
[root@lb01 conf]# curl -H Host:bbs.lewen.com 10.0.0.6/oldboy.html
14
web02 bbs.lewen.com
15
[root@lb01 conf]# curl -H Host:bbs.lewen.com 10.0.0.6/oldboy.html
16
web01 bbs.lewen.com
17
[root@lb01 conf]# curl -H Host:bbs.lewen.com 10.0.0.5/oldboy.html
18
web01 bbs.lewen.com
19
[root@lb01 conf]# curl -H Host:bbs.lewen.com 10.0.0.5/oldboy.html
20
web02 bbs.lewen.com
21
[root@lb01 conf]# curl -H Host:www.lewen.com 10.0.0.5/oldboy.html
22
web01 www.lewen.com
23
[root@lb01 conf]# curl -H Host:www.lewen.com 10.0.0.5/oldboy.html
24
web02 www.lewen.com
1
1
1
yum install -y keepalived
给LVS用的
20
20
1
#keepalive配置文件详解
2
3
global_defs {
4
router_id LB01
5
}
6
7
vrrp_instance VI_1 {
8
state MASTER
9
interface eth0
10
virtual_router_id 51
11
priority 150
12
advert_int 1
13
authentication {
14
auth_type PASS
15
auth_pass 1111
16
}
17
virtual_ipaddress {
18
10.0.0.3/24 dev eth0 label eth0:1
19
}
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.sh
2
#!/bin/bash
3
4
if [ `ps -ef |grep nginx|grep -v grep` -eq 0 ];then
5
/etc/init.d/keepalived stop
6
fi
7
[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 2
4
weight 2
5
}
6
7
8
注意 {} 的空格 注意格式标准正确
30
30
1
[root@lb01 keepalived]# cat keepalived.conf
2
global_defs {
3
router_id LB01
4
}
5
6
vrrp_script check_lb {
7
script "/server/scripts/check_lb.sh"
8
interval 2
9
weight 2
10
}
11
12
vrrp_instance VI_1 {
13
state MASTER
14
interface eth0
15
virtual_router_id 51
16
priority 150
17
advert_int 1
18
authentication {
19
auth_type PASS
20
auth_pass 1111
21
}
22
virtual_ipaddress {
23
10.0.0.3/24 dev eth0 label eth0:1
24
}
25
track_script {
26
check_lb
27
}
28
29
}
30
http://www.dedecms.com/
使用db01上面的数据库
把用户的上传目录挂载到 nfs01