Nginx网站服务

一、Nginx

1、Nginx简介
     Nginx("engine   x") 是一个高性能的HTTP 和反向代理服务器。Nginx是由 Igor   Sysoev 为俄
罗斯访问点开量第二的Rambler.ru 站发的,第一个公开版本0.1.0 发布于2004年10月4日。其将源代码以类BSD 许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011 年6 月 1 日,Nginx 1.0.4 发布。
     Nginx 是一款轻量级的 Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,单台物理服务器可支持30000~50000个并发请求。并在一个BSD-like 协议下发行。由俄罗斯的程序设计师 Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler使用。其特点是占有内存少,并发能力强,事实上 Nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用Nginx网站用户有:百度 BWS、新浪、网易。腾讯、等。
Tengine:
Tenqine 是由淘宝网发起的 Web 服务器项目。它在 Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网、天猫商城等得到了很好的检验。(可以这样理解:淘宝网拿到了Nginx源代码之后,进行了功能的填充、优化等,然后提交给Nginx官方,但是由于Nginx官方相应慢甚至不响应,加上语言沟通的不顺畅,于是淘宝公司就自己打包,在遵循 GPL 的原则上进行二次开发,于是就出了现在的Tengine 这个版本)

 2、简述Nginx和Apache的差异?

Nginx是一个甚于事件的Web服务器,Apache是一个基于流程的服务器;
Nginx所有请求都由一个线程处理,Apache单个线程处理单个请求;
Nginx避免子进程的概念,Apache是基于子进程的;
Nginx在内存消耗和连接方面更好,Apache在内存消耗和连接方面一般;                                   Nginx的性能和可伸缩性不依赖于硬件,Apache依赖于CPU和内存等硬件;
Nginx支持热部署,Apache不支持热部署;
Nginx对于静态文件处理具有更高效率,Apache相对一般;
Nginx在反向代理场景具有明显优势,Apache相对一般。

3、检查、启动、重启、停止nginx服务

(1)检查配置文件是否配置正确 :nginx -t

(2)启动nginx 命令:nginx

(3)停止nginx服务:

先查看nginx的PID号 cat /usr/local/nginx/logs/nginx.pid   

kill -3 <PID号>

kill -s QUIT <PID号>

killall -3 nginx

killall -s QUIT nginx

(4)重载nginx服务

kill -1 <PID号>

kill -s HUP <PID号>

killall -1 nginx

killall -s HUP nginx

(5)日志分隔,重新打开日志文件

kill -URS1 <PID号>

(6)平滑升级

kill -USR2 <PID号>

信号编号信号名含义
0EXIT程序退出时收到该信息
1HUP挂掉电话线或终端连接的挂起信号,这个信号也会造成某些进程在没有终止的情况下重新初始化
2INT表示结束进程,但并不是强制,常用的crtl + c组合键发出的就是一个kill -2的信号
3QUIT退出
9KILL杀死进程,即强制结束进程
11SEGV段错误
15TERM正常结束进程,是kill命令的默认信号

二、安装、升级nginx

1、编译安装nginx

(1)首先安装编译安装需要的软件包

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

 (2)设置不能登录nginx的用户

useradd -M -s /sbin/nologin nginx

 (3)下载软件包并解压到当前文件夹

 (4)编译安装

cd nginx-1.12.2/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module

make -j3 && make install

(5)创建一个软连接把nginx映射成系统命令

 ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

检查下配置文件 nginx -t

 (6)查看nginx检查端口情况和pid号

 查看下版本号

 (7)检查网页

 2、更新nginx

(1)先退出nginx进程

 (2)上传软件包并解压到当前文件夹

tar -zxvf nginx-1.20.2.tar.gz

 (3)编译安装

[root@localhost opt]# cd /opt/nginx-1.20.2/
[root@localhost nginx-1.20.2]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module && make

 (4)新旧交替

mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/1.12nginx

 cp /opt/nginx-1.20.2/objs/nginx /usr/local/nginx/sbin/

 (5)到/usr/local/nginx/sbin下查看nginx版本,检出配置文件,启动nginx

 测试网页连通性

三、HTTP配置

      使用"http()"界定标记,包括访问日志、HTTP端口、网页目录、默认字符集、连接保持,以及后面要讲到的虚拟Web主机、PHP解析等一系列设置,其中大部分配置语句都包含在子界定标记“server{ }”内

1、访问状态统计配置

(1)先使用命令/usr/local/nginx/sbin/nginx -V #查看已安装的Nginx是否包含HTTP_STUB_STATUS模块

cat /opt/nginx-1.12.0/auto/options |grep YES  #可查看nginx已安装的所有模块

 (2)修改nginx.conf配置文件,指定访问位置并添加stub_status配置

cd /usr/local/nginx/conf

cp nginx.conf nginx.conf.bak

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

 (3)查看配置文件是否配置正确

 (4)重启服务

 (5)验证模块是否开启

打开网页搜索192.168.154.19/status

可curl -s http://192.168.154.19结合awk使用

2、基于授权的访问控制

实验拓扑

(1)、生成用户密码认证文件

yum install -y httpd-tools
htpasswd -c /usr/local/nginx/passwd.db zhangsan
chown nginx /usr/local/nginx/passwd.db
chmod 400 /usr/local/nginx/passwd.db

 (2)、编辑配置文件

vim nginx.conf

添加如下两行

#添加认证配置

auth_basic "secret";   # 设置密码提示框文字信息

auth_basic_user_file /usr/local/nginx/passwd.db;  

(3)验证结果

重启服务

 访问页面

 3、基于客户端的访问控制

(1)访问控制规则如下:

deny IP/IP 段;拒绝某个IP或IP段的客户端访问。

allow IP/IP段;允许某个IP或IP段的客户端访问。

规则从上往下执行,如果匹配则停止,不再往下匹配。

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

允许192.168.154.1通过其他的全部拒绝

 测试用192.168.154.1主机还能连通

用20网段的主机就无法连通网页

 4、基于域名的Nginx虚拟主机

 数据流向

=(1)、为虚拟机主机提供域名解析

echo "192.168.154.19 www.fbc.com www.benet.com" >> /etc/hosts

(2)、为虚拟机主机准备网页文档

[root@fbc conf]# mkdir -p /var/www/html/benet
[root@fbc conf]# mkdir -p /var/www/html/fbc
[root@fbc conf]# echo "<h1>www.fbc.com</h1>" > /var/www/html/fbc/index.html
[root@fbc conf]# echo "<h1>www.benet.com</h1>" > /var/www/html/benet/index.html

(3)、修改Nginx的配置文件

server {
        listen       80;
        server_name  www.fbc.com;
        charset utf-8;
        access_log logs/host.access.log;
        location / {
            root /var/www/html/fbc;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        }


    server {
        listen       80;
        server_name  www.benet.com;
        charset utf-8;
        access_log logs/host.access.log;
        location / {
            root /var/www/html/benet;
            index  index.html index.htm;
        }
error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        }

(4)、重启服务并测试

5、基于端口的Nginx虚拟主机

vim nginx.conf

server {
        listen  192.168.154.19:8080;
        server_name  www.fbc.com;
        charset utf-8;
        access_log logs/host.access.log;
        location / {
            root /var/www/html/fbc;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        }


    server {
        listen 192.168.154.19:8888;
        server_name  www.benet.com;
        charset utf-8;
        access_log logs/host.access.log;
        location / {
            root /var/www/html/benet;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        }

2、重启服务并验证

浏览器访问192.168.154.19:8080

 浏览器访问192.168.154.19:8888

 总结

本文主要介绍了Nginx理论知识,Nginx的安装与升级以及Nginx的访问控制。


版权声明:本文为m0_58292366原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。