s28 LNMP架构服务搭建

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 #


Http状态码301和302概念简单区别及企业应用案例


测试其他网站
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 ! \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.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


 

posted @ 2018-09-06 19:30  元贞  阅读(332)  评论(0编辑  收藏  举报