Nginx服务搭建实验

it2026-04-12  2

文章目录

Nginx服务基础功能搭建实验前言基本理论说明服务概述工作原理工作模式与Apache的差异 实验步骤一、Nginx源码安装1.依赖安装2.准备安装包3.解压安装4.访问测试 二、访问模块启用三、目录保护四、身份验证(基于IP)1.允许单个,拒绝所有2.允许所有,拒绝单个 五、虚拟主机六、反向代理1.准备apache测试机2.配置Nginx反向代理 七、Nginx 负载区域构建1.配置主配置文件2.配置Apache服务虚拟机3.访问测试 八、地址跳转1.配置地址跳转2.访问测试 九、HTTPS加密访问1.生成服务器私钥2.创建证书请求3.签发证书4.将证书与私钥移动至相应位置5.开启Nginx加密模块6.访问测试7.设置强制跳转

Nginx服务基础功能搭建实验

前言

本文重点在于前面的原理理解和后面的Nginx服务的标准搭建步骤,前面会介绍Nginx服务的基本概念,如有偏差处,欢迎大家指正,谢谢。

基本理论说明

服务概述

Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器。可以作为一个HTTP服务器进行网站的发布处理,同时也可以作为反向代理进行负载均衡的实现。其主要特点有:

占有内存少,并发能力强。Nginx使用基于事件驱动架构,使得其可以支持数以百万级别的TCP连接。高度的模块化和自由软件许可证使得第三方模块非常丰富。Nginx是一个跨平台服务器,可以运行在Linux,Windows,FreeBSD,Solaris,AIX,Mac OS等操作系统上。

工作原理

Nginx 在启动后,会有一个 master 进程和多个相互独立的 worker 进程接收来自外界的信号,向各worker进程发送信号,每个进程都有可能来处理这个连接。

master 进程能监控 worker 进程的运行状态,当 worker 进程退出后(异常情况下),会自动启动新的 worker 进程。

master进程

主要用来管理worker进程,包含:接收来自外界的信号,向各worker进程发送信号,监控worker进程的运行状态,当worker进程退出后(异常情况下),会自动重新启动新的worker进程。

worke进程

worker进程则是处理基本的网络事件。多个worker进程之间是对等的,他们同等竞争来自客户端的请求,各进程互相之间是独立的。一个请求,只可能在一个worker进程中处理,一个worker进程,不可能处理其它进程的请求。

工作模式

Nginx 是一个高性能的 Web 服务器,能够同时处理大量的并发请求。它结合多进程机制和异步非阻塞机制 。

多进程机制:服务器每当收到一个客户端请求时,就有服务器主进程 (master process)生成一个子进程(worker process)和客户端建立连接进行交互,直到连接断开,该子进程就结束了。

异步非阻塞机制:每个工作进程使用异步非阻塞方式,可以处理多个客户端请求 。当某个工作进程接收到客户端请求以后,调用 IO 进行处理,如果不能立即得到结果,就去处理其他请求(即为非阻塞 )。而客户端在此期间也无需等待响应,可以进行其他任务(即为 异步 )。当IO返回时,就会通知此工作进程。该进程得到通知,暂时挂起当前处理的事务去响应客户端请求。

与Apache的差异

ApacheNginx配置繁琐配置相对简单原生支持动态和静态页面支持静态页面模块相对安全高性能模块出产迅速、社区活跃BUG 相对较少,消耗资源较多BUG相对较多,节省资源对加密支持较好对反向代理支持较好同步阻塞型应用异步非阻塞型应用

实验步骤

实验目的:掌握Nginx服务的基本搭建以及常规设置。

实验准备:C6标准虚拟机三台。(selinux与防火墙已关闭)

ps:标准虚拟机安装见网络阶段Centos6安装指南

实验规划:10.0.0.140(Nginx服务端)

​ 10.0.0.150 (访问测试机1)

​ 10.0.0.160 (访问测试机2)

​ 10.0.0.170 (访问测试机3)

一、Nginx源码安装

1.依赖安装

yum -y install gcc gcc-c++ lrzsz zlib zlib-devel pcre pcre-devel

2.准备安装包

准备一个支持httpd2.0的openssl安装包

Nginx选择1.13.8版本

3.解压安装

解压安装包

tar -zxvf nginx-1.13.8.tar.gz tar -zxvf openssl-1.0.2h.tar.gz

创建Nginx运行用户,开始编译安装。

useradd -s /sbin/nologin -M nginx cd nginx-1.13.8/ ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-openssl=/root/openssl-1.0.2h --with-stream make && make install

4.访问测试

检查配置文件

/usr/local/nginx/sbin/nginx -t

启动服务

/usr/local//nginx/sbin/nginx

浏览访问测试

http://10.0.0.140/

Nginx成功开启。

以下实验环境推荐使用LNMP环境,详情见LNMP环境搭建

二、访问模块启用

编辑Nginx配置文件

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

ps:nginx.conf.default文件是配置文件备份。

在server区域添加以下模块模块描述信息。

#Nginx 状态统计模块 location /nginx-status { stub_status on; sccess_log off; }

保存退出,热重启Nginx。

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

重启命令过长,可以将两条命令写入自定义命令中。

vim /usr/local/bin/ncq

添加以下信息

#!/bin/bash kill -QUIT $( cat /usr/local/nginx/logs/nginx.pid ) && sleep 2s && /usr/local/nginx/sbin/nginx

赋予权限

chmod a+x /usr/local/bin/ncq

访问测试

http://10.0.0.140/nginx-status

Active connections: 1 活跃连接的数量

server accepts handled requests 3 3 2

总共处理的连接 成功握手的次数 总共处理的请求

Reading: 0 Writing: 1 Waiting: 1 正在读取客户端的连接数 响应数据到客户端的量 驻留的连接

访问模块开启成功。

三、目录保护

编辑主配置文件

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

在location模块内添加以下描述信息

stub_status on; auth_basic "Welcome to dadami"; auth_basic_user_file /usr/local/nginx/html/a.psd;

创建daqiang用户

htpasswd -c /usr/local/nginx/html/a.psd daqiang

重启服务,开始访问测试。

http://10.0.0.140/

提示需要用户名登陆,使用刚刚创建的daqiang用户登陆。

登陆成功,目录保护生效。

四、身份验证(基于IP)

1.允许单个,拒绝所有

编辑主配置文件

在location监控模块下添加以下信息

allow 10.0.0.160; deny 10.0.0.0/24;

将目录保护注释。

保存退出,重启服务,开始访问测试。

10.0.0.160访问测试

curl 10.0.0.140/nginx-status

10.0.0.160访问成功。

10.0.0.170访问测试

curl 10.0.0.140/nginx-status

10.0.0.170访问提示权限拒绝。

2.允许所有,拒绝单个

编辑主配置文件

在location监控模块下添加以下信息

deny 10.0.0.150; allow 10.0.0.0/24;

保存退出,重启服务,开始访问测试。

10.0.0.160访问测试

curl 10.0.0.140/nginx-status

10.0.0.170访问测试

curl 10.0.0.140/nginx-status

10.0.0.150访问测试

curl 10.0.0.140/nginx-status

只有10.0.0.150被拒绝,10网段访问正常。

五、虚拟主机

还原主配置文件后,编辑主配置文件。

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

添加server1模块 (此模块在主配置文件中有模版)

#www.daqiang.com server { listen 80; server_name www.daqiang.com; #charset koi8-r; # # #access_log logs/host.access.log main; location / { root html/daqiang; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }

ps:注意大括号数量

添加server2模块

#www.dadami.com server { listen 80; server_name www.dadami.com; #charset koi8-r; #access_log logs/host.access.log main; location / { root html/dadami; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; }

保存退出,创建两个站点的目录文件。

mkdir /usr/local/nginx/html/daqiang mkdir /usr/local/nginx/html/dadami

创建html文件(方便区分两个站点)

echo "dami" > /usr/local/nginx/html/dadami/index.html echo "daqiang" > /usr/local/nginx/html/daqiang/index.html

修改两个站点的属主与属组。

chown nginx:nginx -R /usr/local/nginx/html/daqiang/ chown nginx:nginx -R /usr/local/nginx/html/dadami/

使用windows浏览器进行访问测试。

将站点写入hosts文件中。

C:\Windows\System32\drivers\etc\hosts

重启服务,浏览器开始访问测试。

http://www.dadami.com/

http://www.daqiang.com/

六、反向代理

1.准备apache测试机

此实验需要两台虚拟机或者更多虚拟机。

10.0.0.150 apache虚拟机配置

yum -y install httpd echo "apache" > /var/www/html/index.html systemctl httpd start

检测是否解析

curl localhost

成功解析,apache测试机搭建完毕。

2.配置Nginx反向代理

还原Nginx配置文件

cd /usr//usr/local/nginx/conf/ cp -a nginx.conf.default nginx.conf

编辑主配置文件,修改location模块

proxy_pass http://10.0.0.150:80;

保存退出,重启服务。

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

浏览器开启无痕开始访问测试

http://10.0.0.140/

成功跳转。

七、Nginx 负载区域构建

1.配置主配置文件

还原Nginx主配置文件

cd /usr//usr/local/nginx/conf/ cp -a nginx.conf.default nginx.conf

清除缓存

cd /usr/local/nginx/sbin/nginx rm -rf client_body_temp/ fastcgi_temp/ proxy_temp/ scgi_temp/ uwsgi_temp/

在http模块内,在server模块以外,创建upstream模块。

upstream dadami.com { server 10.0.0.150:80; server 10.0.0.160:80; }

在server模块内,修改location区域:

location / { proxy_pass http://dadami.com; }

2.配置Apache服务虚拟机

虚拟机需要安装apache (yum与源码安装均可)

10.0.0.150 配置html文件

echo "apache1" > /var/www/html/index.html

重启服务,访问测试。

service httpd start curl localhost

10.0.0.160 配置html文件

echo "apache2" > /var/www/html/index.html

重启服务,访问测试。

service httpd start curl localhost

3.访问测试

检查配置文件,检测无误后重启服务。

/usr/local/nginx/sbin/nginx -t kill -QUIT $( cat /usr/local/nginx/logs/nginx.pid ) /usr/local/nginx/sbin/nginx

浏览器开启无痕进行访问测试

点击刷新

负载均衡构建成功!!

真实生产环境,网页文件都在同一台服务器上!!

八、地址跳转

1.配置地址跳转

还原Nginx主配置文件。

编辑主配置文件,增加一台虚拟主机。

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

配置主机www.dadami.com

#www.dadami.com server { listen 80; server_name www.dadami.com; location / { root html/dadami; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }

配置虚拟主机www.daqiang.com

在虚拟主机区域处添加跳转规则

rewrite ^(.*)$ http://www.dadami.com permanent;

#www.daqiang.com server { listen 80; server_name www.daqiang.com; location / { rewrite ^(.*)$ http://www.dadami.com permanent; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; }

保存退出,测试主配置文件是否有语法错误。

/usr/local/nginx/sbin/nginx -t

测试无误,重启服务。

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

2.访问测试

浏览器开启无痕模式,开始访问测试。

http://www.daqiang.com/

自动跳转至dadami。

九、HTTPS加密访问

1.生成服务器私钥

openssl genrsa -des3 -out server.key 1024

ps:本试验设置简单密码123456。

2.创建证书请求

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

分别输入私钥密码,国家,省份,城市,组织名,组织别名,域名,管理员邮箱,其余两项回车跳过。

3.签发证书

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

4.将证书与私钥移动至相应位置

mv server.key /usr/local/nginx/conf/ mv servernew.crt /usr/local/nginx/conf/server.crt cd /usr/local/nginx/conf/

5.开启Nginx加密模块

编辑主配置文件。

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

在需要开启https的server模块内,添加下列信息。

ssl on; 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;

ps:注意修改端口号。

保存退出,测试主配置文件是否有语法错误。

/usr/local/nginx/sbin/nginx -t

检测通过,重启服务。

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

6.访问测试

https://www.dadami.com/

成功访问。

7.设置强制跳转

强制跳转需要使用虚拟主机与地址跳转功能

编辑主配置文件

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

添加虚拟主机,设置跳转规则。

server { listen 80; server_name www.dadami.com root html; index index.html index.htm; rewrite ^(.*)$ https://www.dadami.com permanent; }

保存,检查配置文件是否出错。

/usr/local/nginx/sbin/nginx -t

重启服务,开始访问测试。

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

浏览器开启无痕模式进行访问测试。

www.dadami.com

自动跳转至https访问。

本文档于2020年10月22日由Vonmerlot重新整理。

最新回复(0)