Nginx-配置笔记

◆案例1◆ 编译安装Nginx

1.配置yum源,安装依赖

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

yum -y install epel-release

yum install -y gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel

2.编译安装Nginx

useradd -s /sbin/nologin -M nginx

wget http://nginx.org/download/nginx-1.13.12.tar.gz

tar -xzvf nginx-1.13.12.tar.gz

cd nginx-1.13.12/

./configure --prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_stub_status_module

make && make install

3.启动-关闭-重启Nginx

/usr/local/nginx/sbin/nginx -t                       #检测配置文件正确性
/usr/local/nginx/sbin/nginx                          #启动Nginx

kill -QUIT $(cat /usr/local/nginx/logs/nginx.pid)    #关闭Nginx
kill -HUP $(cat /usr/local/nginx/logs/nginx.pid)     #重启Nginx

◆案例2◆ Nginx-实现身份验证 -- 基于用户名密码的认证

1.编辑Nginx主配置文件

编辑配置文件,在相应的区域中加入以下标★语句

vim /usr/local/nginx/conf/nginx.conf

41 #access_log logs/host.access.log main;
42 
43 location / {                                                #对根站点,设置密码认证
44 root html;                                                  #主页位置,相对路径
45 index index.html index.htm;                                 #主页执行顺序

★    auth_basic "welcome to admin";                           #提示信息(自定义)
★    auth_basic_user_file /usr/local/nginx/html/login.pad;    #生成的密码文件

46 }
47 
48 #error_page 404 /404.html;
49 
50 # redirect server error pages to the static page /50x.html

2.借助Apache的工具生成密码文件

yum install -y httpd

htpasswd -c /usr/local/nginx/html/login.pad lyshark    #创建认证用户(覆盖)
htpasswd -m /usr/local/nginx/html/login.pad lyshark    #写入认证用户(追加)

3.重启Nginx服务

kill -HUP $(cat /usr/local/nginx/logs/nginx.pid)

◆案例3◆ Nginx-实现身份验证 -- 基于IP的身份认证

1.编辑Nginx主配置文件

编辑配置文件,在相应的区域中加入以下标★语句

vim /usr/local/nginx/conf/nginx.conf

41 #access_log logs/host.access.log main;
42 
43 location / {
44 root html;
45 index index.html index.htm;

★    allow 192.168.1.10;        #允许单个IP访问
★    deny 192.168.1.10;         #拒绝单个IP访问
★    allow 0.0.0.0/0;           #允许所有网段
★    deny 0.0.0.0/0;            #拒绝所有网段

46 }
47 
48 #error_page 404 /404.html;
49 
50 # redirect server error pages to the static page /50x.html

2.重启Nginx服务

kill -HUP $(cat /usr/local/nginx/logs/nginx.pid)

◆案例4◆ 配置Nginx虚拟主机(重点)

◆基于域名的虚拟主机◆ >>>实现一台服务器多个域名,搭建多个网站<<<


1.手动配置DNS<实验环境只做正向即可>

分别模拟两个域名 www.xdl.com和www.edu.com并解析到同一台主机上

2.编辑Nginx主配置文件


分别编辑两个主机区域,在相应的区域中加入以下标★语句

vim /usr/local/nginx/conf/nginx.conf

35 server {                    #主机区域1(server1)
36 listen 80;
★ server_name www.xdl.com;    #主机1服务器名(域名1)
38 
39 location / {
★ root html/xdl;              #域名1网页存放位置
41 index index.html index.htm;
42 }
43 error_page 500 502 503 504 /50x.html;
44 location = /50x.html {
45 root html;
46 }
47 }
48 server {                    #主机区域2(server2)
49 listen 80;
★ server_name www.edu.com;    #主机2服务器名(域名2)
51 
52 location / {
★ root html/edu;              #域名2网页存放位置
54 index index.html index.htm;
55 }
56 
57 error_page 500 502 503 504 /50x.html;
58 location = /50x.html {
59 root html;
60 }
61 }

3.在html目录下创建相应目录以及html文件

mkdir /usr/local/nginx/html/xdl/
mkdir /usr/local/nginx/html/edu/

echo "xdl server zone" > /usr/local/nginx/html/xdl/index.html
echo "edu server zone" > /usr/local/nginx/html/edu/index.html

4.重启Nginx服务

kill -HUP $(cat /usr/local/nginx/logs/nginx.pid)

◆基于端口的虚拟主机◆ >>>实现一台服务器多个端口,搭建多个网站<<<

1.手动配置DNS<实验环境只做正向即可>


配置DNS解析 www.lyshark.com 解析到本机


2.编辑Nginx主配置文件

分别编辑两个主机区域,在相应的区域中加入以下标★语句

vim /usr/local/nginx/conf/nginx.conf

35 server {                     #主机区域1(server1)
★ listen 80;                   #主机1端口
★ server_name www.lyshark.com; #主机1服务器名(域名1)
38 
39 location / {
★ root html/lyshark-80;        #域名1网页存放位置
41 index index.html index.htm;
42 }
43 error_page 500 502 503 504 /50x.html;
44 location = /50x.html {
45 root html;
46 }
47 }
48 server {                     #主机区域2(server2)
★ listen 8080;                 #主机区域2端口
★ server_name www.lyshark.com; #主机2服务器名(域名2)
51 
52 location / {
★ root html/lyshark-8080;      #域名2网页存放位置
54 index index.html index.htm;
55 }
56 
57 error_page 500 502 503 504 /50x.html;
58 location = /50x.html {
59 root html;
60 }
61 }

3.在html目录下创建相应目录以及html文件

mkdir /usr/local/nginx/html/lyshark-80/
mkdir /usr/local/nginx/html/lyshark-8080/


echo "xdl server zone" > /usr/local/nginx/html/lyshark-80/index.html
echo "edu server zone" > /usr/local/nginx/html/lyshark-8080/index.html

4.重启Nginx服务

kill -HUP $(cat /usr/local/nginx/logs/nginx.pid)

◆基于IP的虚拟主机◆ >>>实现一台服务器多个IP地址,搭建多个网站<<<

1.配置一个网卡子接口

[root@localhost conf]# ifconfig

eno16777728: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.12 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::20c:29ff:fe1e:14e2 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:1e:14:e2 txqueuelen 1000 (Ethernet)
RX packets 40292 bytes 4129804 (3.9 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 8962 bytes 1557264 (1.4 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

eno16777728:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.13 netmask 255.255.255.0 broadcast 192.168.1.255
ether 00:0c:29:1e:14:e2 txqueuelen 1000 (Ethernet)

2.编辑Nginx主配置文件


分别编辑两个主机区域,在相应的区域中加入以下标★语句

vim /usr/local/nginx/conf/nginx.conf

35 server {
★ listen 192.168.1.12:80;    #指定区域1的IP地址
37 server_name localhost;
38 
39 location / {
★ root html/192.168.1.12;    #指定区域1的文件目录
41 index index.html index.htm;
42 }
43 
44 error_page 500 502 503 504 /50x.html;
45 location = /50x.html {
46 root html;
47 }
48 }
49 server {
★ listen 192.168.1.13:80;    #指定区域2的IP地址
51 server_name localhost;
52 
53 location / {
★ root html/192.168.1.13;    #指定区域2的文件目录
55 index index.html index.htm;
56 }
57 
58 error_page 500 502 503 504 /50x.html;
59 location = /50x.html {
60 root html;
61 }
62 }

3.在html目录下创建相应目录以及html文件

mkdir /usr/local/nginx/html/192.168.1.12/
mkdir /usr/local/nginx/html/192.168.1.13/


echo "ip 1 server" > /usr/local/nginx/html/192.168.1.12/index.html
echo "ip 2 server" > /usr/local/nginx/html/192.168.1.13/index.html

4.重启Nginx服务

kill -HUP $(cat /usr/local/nginx/logs/nginx.pid)

◆案例5◆ 配置Nginx反向代理服务器

1.修改Nginx主配置文件

在相应的区域中加入以下标★语句

vim /usr/local/nginx/conf/nginx.conf

41 #access_log logs/host.access.log main;
42 
43 location / {
44 root html;                            #注释掉
45 index index.html index.htm;           #注释掉
★    proxy_pass http://192.168.1.100;    #反向代理添加此处,当有人访问/时,自动转到100上
46 }
47 
48 #error_page 404 /404.html;
49 
50 # redirect server error pages to the static page /50x.html

2.重启Nginx服务

kill -HUP $(cat /usr/local/nginx/logs/nginx.pid)

◆案例6◆ Nginx实现简单的负载均衡

=====================================================================================
实验环境

Nginx负载均衡          192.168.1.12

Apache主机1            192.168.1.13
Apache主机2       192.168.1.14

实现效果

当用户访问Nginx负载均衡器时,Nginx将访问请求平均分配给后端的Apache服务器,实现负载均衡
=====================================================================================

1.修改Nginx主配置文件

在相应的区域中加入以下标★语句

vim /usr/local/nginx/conf/nginx.conf

17 http {
18 include mime.types;
19 default_type application/octet-stream;
20 sendfile on;
21 keepalive_timeout 65;
22 
★在下处填写负载均衡语句 <语句应写在http语句内并且是在server语句外填写>
★ upstream lyshark.com {              #自定义区域名
★ 
★ server 192.168.1.13:80 weight 1;    #负载均衡主机web1
★ server 192.168.1.14:80 weight 2;    #负载均衡主机web2
★ 
★ server 192.168.1.15:80 weight 1 backup;
★ #backup表示机器处于热备状态,weight代表权重,权重越高使用越多!
★ }
31 
32 server {
33 listen 80;
34 server_name localhost;
35 
36 location / {
★ # root html;                        #注释掉
★ # index index.html index.htm;       #注释掉
★ proxy_pass http://lyshark.com;      #代理交给上面的自定义区域处理
40 }
41 
42 error_page 500 502 503 504 /50x.html;
43 location = /50x.html {
44 root html;
45 }
46 }
47 }

2.重启Nginx服务

kill -HUP $(cat /usr/local/nginx/logs/nginx.pid)

◆案例7◆ Nginx实现https加密认证访问

1.安装软件依赖包

yum install -y pcre-devel zlib-devel openssl openssl-devel

2.建立服务器私钥,过程中需要输入密码

openssl genrsa -des3 -out server.key 1024

----------------------------------------------------------------------------
注释:
Genrsa –des3          #加密类型
-out    server.key    #输出文件
-1024                 #加密长度
----------------------------------------------------------------------------

3.建立证书,生成的csr文件交给CA签名后形成服务端自己的证书

openssl req -new -key server.key -out server.csr

----------------------------------------------------------------------------
注释:
req -new           #新建证书
-key server.key    #私钥文件
-out server.csr    #输出文件

注:依次输入:国家 省 市 组织 机构 全称 EMAIL 是否要改变密码 是否改名称
----------------------------------------------------------------------------

4.转化成证书,这一步由证书CA机构来做的,这里只是实验.

openssl x509 -req -days 365 -sha256 -in server.csr -signkey server.key -out servernew.crt

5.复制证书和密钥到Nginx目录下

cp -a server.key /usr/local/nginx/conf/server.key       #复制密钥到conf目录下
cp -a servernew.crt /usr/local/nginx/conf/server.crt    #复制证书到conf目录下

6.修改Nginx主配置文件

在相应的区域中加入以下标★语句

vim /usr/local/nginx/conf/nginx.conf

33 #gzip on;
34 
35 server {
★ listen 443;                      #修改端口为443
37 server_name localhost;
38 
★ ssl on;                          #开启SSL加密
★ ssl_certificate server.crt;      #证书位置
★ ssl_certificate_key server.key;  #密钥位置
★ ssl_session_timeout 5m;          #会话操作时间
★ ssl_protocols TLSv1;             #协议版本
★ ssl_ciphers HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM;     #指定使用加密算法
★ ssl_prefer_server_ciphers on;    #缓存开启
46 
47 location / {
48 root html;
49 index index.html index.htm;
50 }
51 
52 #error_page 404 /404.html;
53 
54 # redirect server error pages to the static page /50x.html

7.重启Nginx服务

kill -HUP $(cat /usr/local/nginx/logs/nginx.pid)

8.访问地址

https://127.0.0.1:443

◆案例8◆ Nginx实现域名跳转

=====================================================================================

实验效果

将地址        http://127.0.0.1/index.html
跳转到        http://59.110.167.239/index.html

=====================================================================================

1.修改Nginx主配置文件

在相应的区域中加入以下标★语句

vim /usr/local/nginx/conf/nginx.conf

24 server {
25 listen 80;
26 server_name localhost;
27 
28 #charset koi8-r;
29 
30 #access_log logs/host.access.log main;
31 
32 location / {
★ #root html;                     #注释掉
★ #index index.html index.htm;    #注释掉
35 
★    rewrite ^(.*)$ http://59.110.167.239 permanent;    #实现地址全跳转(访问本机跳转到59.110.167.239上)
★    rewrite ^(.*)$ https://$host$1 permanent;          #实现自身http到https的全跳转
37 }
38 
39 #error_page 404 /404.html;
40 
41 # redirect server error pages to the static page /50x.html

2.重启Nginx服务

kill -HUP $(cat /usr/local/nginx/logs/nginx.pid)

3.手动访问本机将跳转到指定地址

http://127.0.0.1/index.html

◆案例9◆ Nginx实现自身http到https的跳转配置

=====================================================================================
实验效果

用户访问http地址自动的跳转到https地址中去访问

访问地址        http://127.0.0.1/index.html
跳转到           https://127.0.0.1/index.html

=====================================================================================

1.安装软件依赖包

yum install -y pcre-devel zlib-devel openssl openssl-devel

2.建立服务器私钥,过程中需要输入密码

openssl genrsa -des3 -out server.key 1024

3.建立证书,生成的csr文件交给CA签名后形成服务端自己的证书

openssl req -new -key server.key -out server.csr

4.转化成证书,这一步由证书CA机构来做的,这里只是实验.

openssl x509 -req -days 365 -sha256 -in server.csr -signkey server.key -out servernew.crt

5.复制证书和密钥到Nginx目录下

cp -a server.key /usr/local/nginx/conf/server.key       #复制密钥到conf目录下
cp -a servernew.crt /usr/local/nginx/conf/server.crt    #复制证书到conf目录下

6.修改Nginx主配置文件

在相应的区域中加入以下标★语句

vim /usr/local/nginx/conf/nginx.conf

17 http {
18 include mime.types;
19 default_type application/octet-stream;
20 sendfile on;
21 keepalive_timeout 65;
22 
23 server {
24 listen 80;
25 server_name localhost;
26 
27 location / {
★ #root html;                     #注释掉
★ #index index.html index.htm;    #注释掉
★ rewrite ^(.*)$ https://$host$1 permanent;    #实现自身http到https的跳转
31 }
32 
33 error_page 500 502 503 504 /50x.html;
34 location = /50x.html {
35 root html;
36 }
37 }
38 
39 server {
★ listen 443;
41 server_name localhost;
42 
★ ssl on;                              #开启SSL加密
★ ssl_certificate server.crt;          #证书位置
★ ssl_certificate_key server.key;      #密钥位置
★ ssl_session_timeout 5m;              #会话操作时间
★ ssl_protocols TLSv1;                 #协议版本
★ ssl_ciphers HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM;    #指定使用加密算法
★ ssl_prefer_server_ciphers on;        #缓存开启
50 
51 location / {
52 root html;
53 index index.html index.htm;
54 
55 }
56 
57 error_page 500 502 503 504 /50x.html;
58 location = /50x.html {
59 root html;
60 }
61 }
62 }

7.重启Nginx服务

kill -HUP $(cat /usr/local/nginx/logs/nginx.pid)

8.手动访问本机将跳转到指定地址

◆案例10◆ Nginx配置HSTS(提高安全性/了解即可)

1.在Https的Server站点添加如下头部

add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";

2.在Http的Server站点添加相应代码

return 301 https://$host;

3.添加X-Frame-Options头部, 确保不会嵌入到Frame 或 iframe,避免点击劫持

add_header X-Frame-Options "DENY";

4.测试方法

chrome://net-internals/

◆实战项目◆ 实现简单企业服务器环境(带HTTPS认证+负载均衡)

=====================================================================================
实验环境

Nginx         反向代理        192.168.1.10
Web1        后端Apache1       192.168.1.20
Web2        后端Apache2       192.168.1.30


实验效果

配置Nginx加密(SSL)传输数据

客户访问      http://www.lyshark.com
跳转到          https://www.lyshark.com

两台web服务器实现压力均摊

实验过程

首先做http到https的跳转

紧接着在做负载均衡

=====================================================================================

1.配置DNS服务器

DNS服务器解析道本机Nginx服务器上

Nginx    192.168.1.12    解析成    www.lyshark.com

2.配置两台Apache服务器

Web1    192.168.1.13
Web2    192.168.1.14

3.安装并配置Nginx

a)生成证书与私钥

openssl genrsa -des3 -out server.key 1024
openssl req -new -key server.key -out server.csr
openssl x509 -req -days 365 -sha256 -in server.csr -signkey server.key -out servernew.crt

b)复制证书和密钥到Nginx目录下

cp -a server.key /usr/local/nginx/conf/server.key
cp -a servernew.crt /usr/local/nginx/conf/server.crt

4.修改Nginx主配置文件,实现https加密认证与负载均衡

在相应的区域中加入以下标★语句

vim /usr/local/nginx/conf/nginx.conf

1 worker_processes  1;
2 
3 events {
4     worker_connections  1024;
5 }
6 
7 
8 http {
9     include       mime.types;
10     default_type  application/octet-stream;
11     sendfile        on;
12     keepalive_timeout  65;
13
=====================================================================================
#在此处填写负载均衡语句(在http语句内,server语句外填写)
★ upstream lyshark.com {                                     #自定义区域名
★ 
★         server 192.168.1.13:80;                            #均衡主机1
★         server 192.168.1.14:80;                            #均衡主机2
★ }
=====================================================================================
19 
20 
21     server {
22         listen       80;
★         server_name  www.lyshark.com;                       #本机域名
24 
25         location / {
★             #root   html;                                   #注释掉
★             #index  index.html index.htm;                   #注释掉
★             rewrite ^(.*)$ https://$host$1 permanent;       #将http请求跳转到https
29         }
30 
31         error_page   500 502 503 504  /50x.html;
32         location = /50x.html {
33             root   html;
34         }
35     }
36
37     server {
★         listen       443;                                   #修改端口
★         server_name  www.lyshark.com;                       #本机域名
40
=====================================================================================
★         ssl on;                                                                 #开启SSL加密
★         ssl_certificate server.crt;                                             #证书位置
★         ssl_certificate_key server.key;                                         #密钥位置
★         ssl_session_timeout 5m;                                                 #会话操作时间
★         ssl_protocols TLSv1;                                                    #协议版本
★         ssl_ciphers HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM;   #指定使用加密算法
★         ssl_prefer_server_ciphers on;                                           #缓存开启
=====================================================================================
48 
49         location / {
★             #root   html;                                    #注释掉
★             #index  index.html index.htm;                    #注释掉
★             proxy_pass http://lyshark.com;                   #实现地址跳转,有80的请求转443    
53         }
54 
55         error_page   500 502 503 504  /50x.html;
56         location = /50x.html {
57             root   html;
58         }
59     }
60 }

5.重启Nginx服务

kill -HUP $(cat /usr/local/nginx/logs/nginx.pid)

6.手动访问本机将跳转到指定地址

http://127.0.0.1/index.html

◆附加◆

开启nginx监控模块

写入 (约在47行)

location /lyshark {    #查看时输入:http://*/lyshark
stub_status on;
}

源码编译修改版本号

vim nginx-1.13.12/src/core/nginx.h

#define nginx_version 1013012
#define NGINX_VERSION "1.13.12"
#define NGINX_VER "nginx/" NGINX_VERSION

修改版本后保存编译即可

猜你喜欢

转载自www.cnblogs.com/LyShark/p/9062803.html