目录

  • 一、Nginx服务概述
  • 二、Nginx安装
  • 三、Nginx的运行控制
  • 四、配置文件nginx.conf
    • 1.全局配置
    • 2.I/O事件配置
    • 3.HTTP配置
    • 4.访问状态统计
  • 五、Nginx访问控制
    • 基于授权的访问控制步骤
    • 基于客户端的访问控制
  • 六、Nginx虚拟主机
    • 1.基于域名的虚拟主机
    • 2.基于IP的虚拟地址
    • 3.基于端口的虚拟主机

一、Nginx服务概述

一款高性能、轻量级Web服务软件

  • 稳定性高
  • 系统资源消耗低
  • 对HTTP并发连接的处理能力高
    单台物理服务器可支持30 000 ~ 50000个并发请求
  • 占用内存少,并发能力强

二、Nginx安装

1.解压跨平台组件包和源码包
将跨平台组件包移动到源码包/opt目录下
nginx-1.12.2.tar.gz

[root@server ~]# cd /opt
[root@server opt]# tar xzvf nginx-1.12.2.tar.gz

2.安装编译器和其他工具

[root@server opt]# yum -y install gcc \
gcc-c++ \
make \
pcre-devel \
expat-devel \
perl \
zlib-devel \
pcre

3.configure配置

[root@server opt]# cd nginx-1.12.2
[root@server nginx-1.12.2]# ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module

4.编译安装

[root@server ~]# make && make install

为了使Nginx服务器的运行更加方便,可以为主程序nginx创建链接文件,以便管理员直接执行“nginx”命令就可以调用Nginx的主程序

[root@server ~]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

6.创建运行用户,组

[root@server ~]# useradd -M -s /sbin/nologin nginx

7.开启nginx,关闭防火墙

[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0
[root@localhost ~]# nginx
[root@localhost ~]# netstat -ntap |grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      5396/nginx: master
tcp        0      0 192.168.197.192:56680   192.168.100.3:445       ESTABLISHED

三、Nginx的运行控制

检查配置文件

[root@localhost ~]# nginx -t        //配置文件语法检查

启动,停止Nginx

[root@localhost ~]# nginx       //启动服务
[root@localhost ~]# killall -1 nginx   //安全重启  killall -s HUP nginx
[root@localhost ~]# killall -3 nginx   //停止服务  killall -s QUIT nginx

使用Nginx服务脚本
为了使Nginx服务的启动,停止,重载等操作更加方便,可以编写Nginx服务脚本,并使用chkconfig和service工具来进行管理,也更加符合RHEL系统的管理习惯。

[root@localhost ~]# vi /etc/init.d/nginx
#!/bin/bash
# chkconfig: 35 99 20
# description: Nginx Service Control Script
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" instart)$PROG;;stop)kill -s QUIT $(cat $PIDF);;restart)$0 stop$0 start;;reload)kill -s HUP $(cat $PIDF);;*)echo "Usage: $0 {start|stop|restart|relad}"exit 1
esac
exit 0[root@localhost ~]# chmod +x /etc/init.d/nginx
[root@localhost ~]# chkconfig --add nginx
[root@localhost ~]# chkconfig --level 35 nginx on

这样一来,就可以通过Nginx脚本来启动,停止,重启,重载Nginx服务器了,方法是在执行时添加相应的start,stop,restart,reload参数。

四、配置文件nginx.conf

在Nginx服务器的主配置文件/usr/local/nginx/conf/nginx.conf中,包括全局配置,I/O事件配置和HTTP配置这三大块内容,配置语句的格式为“关键字 值;”(末尾以分号表示结束),以“#”开始的部分表示注释

1.全局配置

由各种配置语句组成,不使用特定的界定标记,全局配置部分包括Nginx服务的运行用户,工作进程数,错误日志,PID存放位置等基本设置。

[root@localhost ~]# vi /usr/local/nginx/conf/nginx.conf
#user  nobody;          //运行用户
worker_processes  1;        //工作进程数
#error_log  logs/error.log; //错误日志文件的位置
#pid        logs/nginx.pid;     //PID文件的位置

上述配置中,worker_processes表示工作进程数。若服务器有多块CPU或者使用多核处理器,可以参考CPU核心总数来指定工作进程数,如设为8;如果网站访问量需求不大,一般设为1就够用了。其他三项均已有注释,表示采用默认设置,例如,Nginx的运行用户实际是编译时指定的nginx,若编译时未指定则默认为nobody。

2.I/O事件配置

使用“events{ }” 界定标记,用来指定Nginx进程的I/O响应模型,每个进程的连接数等设置。对于2.6及以上版本的内核,建议使用epoll模型以提高性能;每个进程的连接数应根据实际需要来定,一般在10000以下(默认为1024)

[root@localhost ~]# vi /usr/local/nginx/conf/nginx.conf
events {use epoll;                  //使用epoll模型worker_connections  4096;        //每进程处理4096个连接
}
[root@localhost ~]# ulimit -n 65500 >> /etc/rc.local
[root@localhost ~]# ulimit -n

若工作进程数为8,每个进程处理4096个连接,则允许Nginx正常提供服务的连接数已超过3万个,(4096✖8=32768),当然具体还要看服务器硬件,网络带宽等物理条件的性能表现。

3.HTTP配置

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

[root@localhost ~]# vi /usr/local/nginx/conf/nginx.conf
http {include       mime.types;default_type  application/octet-stream;log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log  logs/access.log  main;     //访问日志位置sendfile        on;                     //支持文件发送(下载)#tcp_nopush     on;#keepalive_timeout  0;keepalive_timeout  65;               //连接保持超时#gzip  on;
server {                            //Web服务的监听配置listen       80;                    //监听地址及端口server_name  localhost;            //网站名称(FQDN)charset utf-8;                   //网页的默认字符集access_log  logs/host.access.log  main;location / {                   //根目录配置root   html;                 //网站根目录的位置index  index.html index.htm;  //默认首页(索引页)}
error_page   500 502 503 504  /50x.html;        //内部错误的反馈页面location = /50x.html {                  //错误页面配置root   html;}
}
}

上述配置中,listen语句允许同时限定IP地址,采用“IP地址:端口”形式;root语句用来设置特定访问位置(如“location /" 表示根目录)的网页文档路径,默认为Nginx安装目录下的html/子目录,根据需要可改为/var/www/html等其他路径。

4.访问状态统计

ginx内置了HTTP_STUB_STATUS状态统计模块,用来反馈当前的Web访问情况,配置编译参数时可添加–with-http_stub_status_module来启用此模块支持,可使用命令/usr/local/nginx/sbin/nginx -V 来查看以安装的Nginx是否包含HTTP_STUB_STATUS模块。

要使用Nginx的状态统计功能,除了启用内建模块以外,还需要修改nginx.conf配置文件,指定访问位置并添加stub_status配置代码。

[root@localhost ~]# vi /usr/local/nginx/conf/nginx.conf
http {server {listen       80;server_name  localhost;#charset koi8-r;#access_log  logs/host.access.log  main;location / {root   html;index  index.html index.htm;}
location ~ /status {            //访问位置为/statusstub_status on;       //打开状态统计功能access_log off;       //关闭此位置的日志记录
}
}

新的配置生效后,在浏览器中访问Nginx服务器的/status网络位置,可以看到当前的状态统计信息
active connections //活跃的连接数量
server accepts handled requests //总共处理了x个连接,成功握手y次,总共处理了z个请求
reading //读取客户端的连接数
writing //响应数据到客户端的数量
waiting //已处理的请求数

五、Nginx访问控制

  • Nginx与Apache一样,可以实现基于用户授权的访问控制,当客户端想要访问相应的网站或者目录时,要求用户输入用户名和密码才能正常访问,配置步骤与Apache基本一致。
  • Apache网页认证实现步骤可概括为:
    1.生成用户密码认证文件
    2.修改主配置文件相应目录,添加认证配置项
    3.重启服务,访问测试

基于授权的访问控制步骤

Nginx实现授权访问控制的步骤如下:
1.使用htpasswd生成用户认证文件,如果没有该命令,可使用yum安装httpd-tools软件包,用法与Apache认证时方式相同,如:htpasswd -c /usr/local/nginx/passwd.db test。

[root@server ~]# yum -y install httpd-tools
[root@server ~]# htpasswd -c /usr/local/nginx/passwd.db test
New password:           //输入密码
Re-type new password:       //输入密码
Adding password for user test
[root@server ~]# cat /usr/local/nginx/passwd.db
test:$apr1$AF325xkf$bo4A4LFFGhAPDfPSaQu6b1

在/usr/local/nginx/目录下生成了passwd.db文件,用户名是test,密码输入2次。在passwd.db中生成用户和密码的密文

2.修改密码文件的权限为400,将所有者改为nginx,设置nginx的运行用户能够读取

[root@server ~]# chmod 400 /usr/local/nginx/passwd.db
[root@server ~]# chown nginx /usr/local/nginx/passwd.db

3.修改主配置文件nginx.conf,添加相应认证配置项。

[root@server ~]# vi /etc/local/nginx/conf/nginx.conf
server {locaion / {auth_basic "secret";
auth_basic_user_file /usr/local/nginx/passwd.db;
}
}

4.检测语法,重启服务

[root@localhost ~]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: [warn] 4096 worker_connections exceed open file resource limit: 1024
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@server ~]# ulimit -n 65500
[root@server ~]# ulimit -n 65500 >> /etc/rc.local
[root@server ~]# systemctl restart nginx

5.用浏览器访问网址,检验控制效果。

基于客户端的访问控制

1.基于客户端的访问控制简介
基于客户端的访问控制是通过客户端IP地址,决定是否允许对页面访问。Nginx基于客户端的访问控制要比Apache简单,规则如下:
deny IP/IP段:拒绝某个IP或IP段的客户端访问。
allow IP/IP段:允许某个IP或IP段的客户端访问。
规则从上往下执行,如匹配则停止,不再往下匹配。
2.基于客户端的访问的控制步骤
Nginx实现客户端访问控制的步骤如下:
修改主配置文件nginx.conf,添加相应配置项

[root@localhost ~]# vi /usr/local/nginx/conf/nginx.conf
server {location / {deny 192.168.10.1;          //客户端IP
allow all;
}
}

Deny 192.168.10.1 表示这个IP地址访问会被拒绝,其他IP客户端正常访问。
重启服务器访问网址,页面已经访问不到(出现403错误)

六、Nginx虚拟主机

  • 利用虚拟主机,不用为每个要运行的网站提供一台单独的Nginx服务器或单独运行一组Nginx进程,虚拟主机提供了在同一台服务器,同一组Nginx进程上运行多个网站的功能。跟Apache一样,Nginx也可以配置多种类型的虚拟主机,分别是基于IP的虚拟主机,基于域名的虚拟主机,基于端口的虚拟主机。
  • 使用Nginx搭建虚拟主机服务器时,每个虚拟Web站点拥有独立的:“server { }”配置段,各自监听的IP地址,端口号可以单独指定,当然网络名称也是不同的。

1.基于域名的虚拟主机

1.准备各个网站的目录和测试首页

[root@localhost ~]# mkdir -p /var/www/html/aa.com/
[root@localhost ~]# mkdir -p /var/www/html/bb.com/
[root@localhost ~]# echo "this is aa" >>
/var/www/html/aa/index.html
[root@localhost ~]# echo "this is bb" >>
/var/www/html/bb/index.html
[root@localhost ~]# yum -y install bind
[root@localhost ~]# vim  /etc/named.conf
[root@localhost ~]# vim /etc/named.rfc1912.zones
[root@localhost ~]# cp -p /var/named/named.localhost /var/named/erbao.com.zone
[root@localhost ~]# vim /var/named/erbao.com.zone
[root@localhost ~]# cp -p /var/named/erbao.com.zone /var/named/sanbao.com.zone
[root@localhost ~]# systemctl start named

2.修改配置文件,把配置文件中的server { } 代码段全部去掉,加入2个新的server { }段,对应两个域名

[root@server ~]# vi /usr/local/nginx/conf/nginx.conf
server {listen       80;server_name  www.aa.com;charset utf-8;access_log  logs/host.access.log  main;location / {root   /var/www/html/aa;index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}
server {listen       80;server_name  www.bb.com;charset utf-8;access_log  logs/host.access.log  main;location / {root   /var/www/html/bb;                                                              index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}[root@server ~]# [root@server ~]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

3.分别访问2个域名,查看是否访问到不同的页面,测试是否成功。

2.基于IP的虚拟地址

1.一台主机如果有多个IP地址,可以设置每一个IP对应一个站点。主机安装多个网卡可以有多个IP,这里采用虚拟IP的方式使主机有多个IP

[root@server ~]# ip addr
inet 192.168.10.40/24 brd 192.168.10255 scope global ens33
目前主机有一个网卡,IP地址是192.168.10.40。在配置一个虚拟IP为192.168.10.50。
[root@server ~]# ifconfig ens37 192.168.10.50/24
inet 192.168.10.40/24 brd 192.168.10.255 scope global ens33
inet 192.168.10.50/24 brd 192.168.10.255 scope global ens37

2.以/var/www/htmltestcom和/var/www/html/btcom为两个站点的根目录,修改Nginx的配置文件,使基于IP的虚拟主机生效。这里省略了和基于域名虚拟主机的相同配置代码。

 [root@server ~]# vi nginx.conf
server {listen 192.168.10.40:80;
server_name www.aa.com;
}
server {listen 192.168.10.50:80;
server_name www.bb.com;
}

3.分别访问2个IP地址,查看是否访问到不同的页面,测试是否成功。

3.基于端口的虚拟主机

1.选择系统中不使用的端口,将多个端口映射到同一IP地址。

vi nginx.conf
server {listen 192.168.10.40:80;            //监听80端口
server_name www.aa.com;
}
server {listen 192.168.10.40:8080;      //监听8080端口
server_name www.bb.com;
}

2.检测端口是否运行正常。
service nginx stop
service nginx start
netstat -anpt | grep nginx
3.分别访问2个端口地址,查看是否访问到不同的页面,测试配置是否成功。

Nginx运行控制虚拟主机和访问控制相关推荐

  1. Nginx多站点虚拟主机实现单独启动停止php-fpm、单独控制权限设置

    Nginx多站点虚拟主机实现单独启动停止php-fpm.单独控制权限设置 来源:osyunwei.com 作者:qihang01 发表于:2012-08-19 21:26 点击: 说明: 站点1:bb ...

  2. Nginx优化之虚拟主机

    文章目录 前言 一:Nginx服务基础 1.1:Nginx概述 1.2:Nginx编译安装(过程) 1.3:运行控制(实验过程) 1.4:配置文件nginx.conf 1.5:Nginx的访问状态统计 ...

  3. 构建虚拟主机以及访问控制

    构建虚拟主机以及访问控制 理论部分: 上一章我们讲到的AWSTATS系统,统计页面在WEB界面上呈现出来,有一个问题我们都注意到了,只要是输入地址就可以访问,这样任何人都可以看到公司的网站访问情况,这 ...

  4. Nginx实现多虚拟主机配置

    一.Nginx的应用概述 Nginx作为一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器.主要有以下3方面的应用: 1.http服务器 Nginx是一个http服 ...

  5. Nginx安装与虚拟主机配置shell脚本

    今天继续给大家介绍Linux运维相关知识,本文主要内容是Nginx安装与虚拟主机配置shell脚本. 一.NGINX安装 在今天的脚本上,我们开始尝试使用函数和参数,以增强脚本的灵活性和实现脚本的模块 ...

  6. httpd配置三种虚拟主机带访问控制

    目录 httpd配置三种虚拟主机带访问控制 虚拟主机: 相同IP不同端口 不同IP相同端口 相同IP相同端口不同域名 访问控制法则 安装ssl安全模块 配置https CA生成密钥 CA生成自签署证书 ...

  7. 通过ngx-lua来统计Nginx上的虚拟主机性能数据

    Web server调研分析 Filed under: Web Server - cmpan @ 2012-10-29 20:38:34 摘要 简单可依赖的架构首先需要有一个简单可依赖的前端WebSe ...

  8. 11-4 12 Nginx安装 默认虚拟主机 用户认证 域名重定向

    2019独角兽企业重金招聘Python工程师标准>>> 12.6 Nginx安装 12.7 默认虚拟主机 12.8 Nginx用户认证 12.9 Nginx域名重定向 扩展 ngin ...

  9. Nginx如何配置虚拟主机?

    注意,该环境是依赖于http://www.php20.com/forum.php?m ... &extra=page%3D1 基础上进行配置.默认不具备这些文件 . 下面是增加一个mytest ...

最新文章

  1. php函数知识点,php入门学习知识点七 PHP函数的基本应用_php基础
  2. 【LeetCode算法题库】Day5:Roman to Integer Longest Common Prefix 3Sum
  3. mysql增量备份实例_MySQL增量备份与恢复实例
  4. pq 中m函数判断嵌套_你还在用IF函数进行逻辑判断吗?试试PQ,简单又实用
  5. layui upload 点击上传没有反应 JS动态加载
  6. 电脑配置知识_高品质全铝迷你电脑主机推荐 适合家用/办公/游戏的锐龙APU电脑配置...
  7. 210920-车站问题
  8. 工具类:获取两个经纬度的距离(米)
  9. Excel怎么锁定单元格
  10. SDOI 2018 R2 游记
  11. 2022年黑客书籍推荐
  12. Vbox安装虚拟机教程
  13. 存储过程(Stored Procedure)介绍
  14. 深度学习网络各种激活函数 Sigmoid、Tanh、ReLU、Leaky_ReLU、SiLU、Mish
  15. 推荐:Nginx 会话黏着一致性解决
  16. 1024: 手机话费
  17. 王亟亟的Python学习之路(五)-dictionary,set,函数,函数参数
  18. EasyClick IOS 自动化测试 使用前置准备
  19. 力学笃行系列之Spring和JDK设计中用到的设计模式
  20. 跨平台的ide使用-codeblock

热门文章

  1. vscode文件飘红色波浪线
  2. Qt6 QML Book/图形效果/粒子群组
  3. 数据库三级填空题(应用题)常考总结
  4. STM32H7内部Flash的读保护说明(Level0默认,Level1连接保护,Level2设备和自举保护)
  5. java搜索拉钩_java实现拉钩网上的FizzBuzzWhizz问题示例
  6. 聊天窗口内容滚动到底部的方法scrollTop和scrollIntoView
  7. 从七十年代到现在软件架构的思想变化
  8. mysql 查看版本的几种方法
  9. 分类---逻辑回归(二分类)
  10. 网页版微信和微信公共号扫码登陆原理分析