提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、编译安装Nginx服务
    • 1、关闭防火墙,配置域名
    • 2、安装nginx软件包及依赖包
    • 3、编译安装Nginx
    • 4、检查、启用、添加系统管理
  • 二、Nginx 配置文件
    • 1、工作进程
    • 2、配置文件具体模块
    • 3、配置本地映射
  • 三、访问状态统计
  • 四、访问控制
    • 1、基于授权的访问控制
    • 2、基于客户端的访问控制
  • 五、虚拟主机
    • 1、基于域名的Nginx虚拟主机
    • 2、基于端口的虚拟主机
    • 3、基于不同IP访问
  • 六、总结

前言

Nginx是一款高性能、轻量级Web服务软件,剧透稳定性高,系统资源消耗低(占有内存少),以及对HTTP并发连接的处理能力高的优点,单台物理服务器可支持30000 ~ 50000个并发请求;Nginx 可以作为静态页面的 web 服务器,从而逐渐取代了apache的位置。目前中国大陆使用Nginx 网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

一、编译安装Nginx服务

1、关闭防火墙,配置域名

systemctl stop fi rewalld. service .
systemctl disable fi rewalld. service
setenforce 0
vim resolv.conf
nameserver 114.114.114.114

2、安装nginx软件包及依赖包

上传至/opt目录下

cd /opt
yum -y install gcc gcc-c++ pcre-devel zlib-devel make

3、编译安装Nginx

tar zxvf nginx-1.12.2.tar.gz
cd /opt/nginx-1.12.2/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
make && make install
useradd -M -s /sbin/nologin nginx
ln -s /usr/local/nginx/sbin/* /usr/local/sbin/
  • 配置详解

    • –user=nginx ##管理用户的身份
    • –group=nginx ##管理用户的组
    • –with-http_stub_status_module ##http状态统计模块

4、检查、启用、添加系统管理

  • 常用命令

    • nginx -t #检查配置文件是否配置正确
    • nginx #启动
  • 停止nginx 服务

    • cat /usr/local/nginx/logs/nginx.pid ##首先查看nginx的PID号
    • kill -3. < PID号> ##暴力杀死
    • kill -s QUI’T <PID号> ##友好杀死
    • killall -3 nginx
    • killall -s QUIT nginx
  • 重载

    • kill -1 <PID号>
    • kill -s HUP <PID号>
    • killall -1 nginx
    • killall -s HUP <PID号>
  • 选项

    • -s:指定信号种类
    • HUP:重载配置
    • QUIT:退出进程
  • 方式一:添加Nginx 系统服务(service管理)

vim /etc/init.d/nginx
#!/bin/bash
# chkconfig: - 99 20    ## chkcofig - “-” 表示不启用开机启动管理 (同时 若不加“#”, chkconfig add nginx 会加载不到配置)
# description: Nginx Service Control Script     ##启动信息
COM="/usr/local/nginx/sbin/nginx"    ##命令程序文件位置(nginx)
PID="/usr/local/nginx/logs/nginx.pid"    ##pid文件
case "$1" in   ##$1指的是nginx的stop和start
start)$COM;;
stop)kill -s QUIT $(cat $PID);;
restart)$0 stop    ##用$0执行stop$0 start   ##用$0调用start;;
reload)kill -s HUP $(cat $PID);;
*)echo "Usage: $0 {start|stop|restart|reload}"exit 1
esac
exit 0chmod +x /etc/init.d/nginx
chkconfig --add nginx       ##添加为系统服务
service nginx start          ##开启服务
可在/etc/rc.d/init.d目录下查看到nginx服务

  • 方式二:使用systemctl管理
vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx       ##描述
After=network.target       ##描述服务类别
[Service]
Type=forking       ##后台运行类型
PIDFile =/usr/local/nginx/logs/nginx.pid       ##PID文件位置
ExecStart=/usr/local/nginx/sbin/nginx      ##启动服务
ExecReload=/bin/kill -s HUP $MAINPID       ##根据PID重载配置
ExecStop=/bin/kill -s QUIT $MAINPID        ##根据PID终止进程
PrivateTmp=true                        ##开启
[Install]
WantedBy=multi-user.target         ##启动级别chmod 754 /lib/systemd/system/nginx.service   #设置754权限是一种安全优化
systemctl start nginx.service
systemctl enable nginx.service

二、Nginx 配置文件

1、工作进程

cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bak        ##备份
cat /usr/local/nginx/conf/nginx.conf     ##查看nginx配置文件#user nobody;     ##默认运行/管理用户worker processes1;       #工作进程运行数量,可配置成服务器内核数*2,如果网站访问量不大,一般设为1#error_ log  logs/error .log;            ##错误日志文件路径/级别   #error_ log logs/error. log notice;     ##相对路径/usr/local/nginx#error_ log   logs|/error. log    info;#pid       logs/ nginx.pid;                #pid文件位置
events {                        ## 事件worker connections 1024;       #每个进程最多处理的连接数量

在Linux平台上,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制,可使用ulimit-a命令查看系统允许当前用户进程打开的文件数限制

  • 方式一:命令行执行“ulimit -n 65535”命令临时修改本地每个进程可以同时打开的最大文件数。
    ulimit -a:查询当前可以同时打开最大文件数1024
    ulimit -n 65535
  • 方式二、vim /usr/local/nginx/conf/nginx.conf内修改数值为65535

2、配置文件具体模块

vim /usr/local/nginx/conf/nginx.conf                                          ##查看nginx配置文件
--------------------------------------------->http协议的配置模块<-------------------------------------------------------------------------------------------------
http {                                              #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"#                                   ' "Shttp_ user_ agent" "$http_ x_ forwarded_ for" ';#access_ log  logs/access.log main;       #访问日志位置,默认注释sendfile on;                          ##支持文件发送(下载)#tcp_ nopush    on;                     #此项允许或禁止使用socket的       TCP_CORK的选项(发送数据包前先缓存数据),此选项仅在使用     sendfile的时候使用#keepalive_ timeout 0;             ##连接保持超时时间,单位:秒keepalive_timeout 65; #gzip on;                           #压缩模块on表示开启
------------------------------------------->server端的配置模块<--------------------------------------------------------------------------------------------------
server {                                            ##web服务相关的一些配置listen        80;                             ##默认监听端口server name     localhost;          ##站点域名;在本地没有dns服务下,可以支持域名访问#charset koi8-r;                          ##字符集支持( 修改为中文) UTF-8#access_ log logs/host.access.1og main;        ##此web服务的主访问日志只保存htpd服务的访问日志location / {                                    ##“/"根目录配置( 浏览器中,www. baidu. com./root      html;                               ##网页的目录文件;网站根目录的位置/usr/local/nginx/html ( 相对路径)index    index.html index. htm;      ##支持的首页文件格式#error_ page 404         / 404.html;# redirect server error pages to the static page /50x.htmlerror_ page        500 502 503 504 /50x. html;     ##当发生错误的时候能够显示一个预定义的错误页面location = /50x.html {         ##错误页面配置root    html ;}---------------------------------------->支持php跳转的配置<---------------------------------------------------------------------------------------------------
# proxy(代理) the PHP scripts to Apache listening on 127.0.0.1:80   ##以下是支持PHP及跳转的配置
#
#location ~ \.php$ {
#       proxy_ _pass    http; L /127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127 .0.0.1 : 9000
#
#location ~ \. php$ {
#       root                html ;
#       fastcgi pass        127.0.0.1: 9000;
#       fastcgi_ index      index . php;
#       fastcgi_ param  SCRIPT_ FILENAME / scripts$fastcgi_ script_ name;
#       include         fastcgi_ params ;
#}
#   deny access to . htaccess files, if Apache's document root
#   concurs with nginx's one
#
#location ~ /\.ht {
deny    all ;
#}
}
---------------------------------------------------->虚拟主机配置<-------------------------------------------------------------------------------------------------
# another virtual host using mix of IP-, name-, and port- -based conf iguration
#server{                    ##虚拟主机的配置
#   listen  8000;
#   listen  somename: 8080;
server name somename    alias   another .alias;
#   location / {
#   root        html;
#   index   index.html index. htm;
#
#}
---------------------------------------------->nginx加密模块:以注释的方式给出模板<-----------------------------------------------------------------------
# HTTPS server                                                  ##HTTPS的配置
#
#server {
#   listen              443 ssl;
#   server name         localhost;
#   ssl certi ficate            cert . pem;
#   ssl_ certificate key        cert. key;
#   ssl session cache       shared: SSL: 1m;
#   ssl session timeout     5m;
#   ssl_ ciphers HIGH: ! aNULL: !MD5;
#   ssl_ prefer_ server_ ciphers .  on;
#   location / {
#       root    html ;
#       index index .html index. htm;
#
}
#}

3、配置本地映射

vim /etc/hosts
192.168.35.40 www.zyt.com


访问域名 www.zyt.com

三、访问状态统计

  1. 查看已安装的Nginx是否包含HTTP_ STUB STATUS 模块
nginx -V

  1. 修改nginx.conf 配置文件,指定访问位置并添加stub_ status 配置
cd /usr/local/nginx/conf/
#cp nginx.conf nginx.conf .bak
vim /usr/local/nginx/conf/nginx.conf
  1. 在http内的server字段中匹配根目录下添加访问状态统计模块
   server {listen       80;server_name  www.zyt.com;#charset koi8-r;#access_log  logs/host.access.log  main;location / {root   html;index  index.html index.htm;}
## 添加 stub_status配置location /status{        ##访问位置为/status:www.zyt.com/statusstub_status on;    ##打开状态统计功能access_log off;   ##关闭此位置的日志记录}
systemctl restart nginx   ##重启服务


浏览器访问http://192.168.35.40/status或www.zty.com/status

  • Active connections :表示当前的活动连接数;
  • service accepts handled requests:表示已经处理的连接信息,三个数字依次表示已处理的连接数、成功的TCP握手次数、已处理的请求数

四、访问控制

1、基于授权的访问控制

htpawwd : htpasswd是一个用于目录访问权限认证的一个工具。
-c :创建密码文件,如果文件存在,那么内容被清空重写

  1. 生成用户密码认证文件
yum install -y httpd-tools
htpasswd -c /usr/local/nginx/passwd.db wangwu  ##passwd.db:表示密码数据文件;用户可以不是系统用户
chown nginx /usr/local/nginx/passwd.db      ##添加nginx管理、
chmod 400 /usr/local/nginx/passwd.db        ##给与400权限

  1. 修改主配置文件相对应目录,添加认证配置项
vim /usr/local/nginx/conf/nginx.conflocation / {auth_basic "secret";       #在主页配置项中添加认证auth_basic_user_file /usr/local/nginx/passwd.db;        #在主页配置项中添加认证root   html;index  index.html index.htm;}
  1. 重启服务,访问测试
nginx -t
systemctl restart nginx


测试:浏览器访问http:/ /www.zty.com,页面提示需要输入账号密码

  1. 也可以在访问统计模块stub_status中添加


    systemctl status nginx network ##同时查看网络服务和nginx服务
  2. location 设置相关问题
    我们在不同的location位置可以做不同的功能限制,比如我们可以让用户可以直接访问首页
    但不允许用户直接访问状态统计模块,如何配置?
    如下图所示,根目录的配置不变,在stuatus模块中加入两条即可
auth_basic "secret";
auth_basic_user_file /usr/local/nginx/passwd.db;

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

  1. 访问控制规则如下
    deny IP/IP段:拒绝某个IP或IP段的客户端访问
    allow IP/IP段: 允许某个IP或IP段的客户端的访问
    规则从上往下执行,如匹配则停止,不再往下匹配
vim /usr/local /nginx/ conf/ nginx. conf
location / {
root    html ;
index   index.html index .htm;
deny 192.168.35.1;      #添加拒绝访问的客户端的IP,宿主机ip192.168.35.1
allow all;                  #添加允许其他IP客户端访问

测试:此时通过IP为192.168.35.100的虛拟Windows10主机访问192.168.35.40时就不能访问

五、虚拟主机

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

----------------------------------->添加域名解析<-----------------------------------------------------------------------------------------
vim /etc/hosts
192.168.35.40 www.zyt.com www.kljklj.com www.kjkj.com
----------------------------------->准备虚拟站点网页文档<---------------------------------------------------------------------------------
mkdir -p /var/www/html/kljklj
mkdir -p /var/www/html/klkl
echo "<h1> www.kljklj.com </h1>" > /var/www/html/kljklj/index.html
echo "<h1> www.klkl.com </h1>" > /var/www/html/klkl/index.html
-------------------------------->修改配置文件,删除pho跳转部分模板<----------------------------------------------------------------
...
http
...
server {listen       80;server_name  www.kljklj.com;charset utf-8;access_log  logs/kljklj.access.log;location / {root   /var/www/html/kljklj;index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}
}server {listen       80;server_name  www.klkl.com;charset utf-8;access_log  logs/klkl.access.log;location / {root   /var/www/html/klkl;index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}
}
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
systemctl restart nginx       ##重启服务



2、基于端口的虚拟主机

------------------------------------->创建8080端口的网页文件<------------------------------------------------------------------------------------------------
mkdir -p /var/www/html/ll8080
echo "<h1> www.ll8080.com </h1>" > /var/www/html/ll8080/index.html
-------------------------------------->进入配置文件复制www.kljklj.com的配置修改端口号<--------------------------------------------------------------server {                          ##原kljklj配置listen       192.168.35.40:80;           ##指向监听端口server_name  www.kljklj.com;charset utf-8;access_log  logs/kljklj.access.log;location / {root   /var/www/html/kljklj;index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}
}server {listen       192.168.35.40:8080;server_name  www.kljklj.com;charset utf-8;access_log  logs/kljklj.access.log;location / {root   /var/www/html/kljklj;index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}
}
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
nginx -t
systemctl stop nginx
systemctl start  nginx
netstat -antp | grep nginx


3、基于不同IP访问

---------------------------->添加192.168.35.100的映射<---------------------------------------------------------------------------------------------------------
vim /etc/hosts
192.168.35.100 www.klkl.com
--------------------------->创建网站根目录、创建192.168.226. 100的网站首页文件( index. html )<-----------------------------------------------------
mkdir /var/www/html/klkl100
echo "<h1> www.klkl100.com </h1>" /var/www/html/klkl100/index.html
<h1> www.klkl100.com </h1> /var/www/html/klkl100/index.html
----------------------------->临时创建虚拟网卡<------------------------------------------------------------------------------------------------------------------------
ifconfig ens33:0 192.168.35.100 netmask 255.255.255.0
------------------------------>修改配置文件<-----------------------------------------------------------------------------------------------------------------------------server {listen       192.168.35.40:80;server_name  www.kljklj.com;charset utf-8;access_log  logs/kljklj.access.log;location / {root   /var/www/html/kljklj;index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}
}server {listen      192.168.35.100:80;     ##监听ip改为100server_name  www.klkl.com;charset utf-8;access_log  logs/klkl.access.log;location / {root   /var/www/html/klkl;index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}
}



六、总结

本章讲解了如何安装Nginx服务,以及Nginx的配置文件如何配置,Nginx的访问状态统计,Nginx的访问控制,比如拒绝某个ip地址访问,访问时是否需要输入密码等,还介绍了Nginx的虚拟主机,主要是基于域名、端口、ip的三种方式进行讲解
以下对Nginx服务进行总结:

  • 理解常用的概念

    • Nginx是一款高性能、轻量级Web服务软件,具有稳定性高,系统资源消耗低(占有内存少),以及对HTTP并发连接的处理能力高的优点,单台物理服务器可支持30000 ~ 50000个并发请求;Nginx 可以作为静态页面的 web 服务器,从而逐渐取代了apache的位置。目前中国大陆使用Nginx 网站用户有:百度、京东、新浪、网易、腾讯、淘宝等
  • 功能:web服务,擅长于静态页面处理
  • 常用功能:
    • 虚拟主机:节省资源, 充分利用资源
    • 反向代理( 动态页面请求交给apache)压缩静分离
    • 缓存:提高客户侧和服务端两边的一个读取性能
    • 用户和组
    • 访问权限:安全管理
    • 状态统计便于管理人员管理

Nginx服务基础:配置文件、访问状态统计、虚拟主机相关推荐

  1. Nginx网站服务配置(Nginx服务基础,访问状态统计,访问控制,虚拟主机)

    编译安装Nginx服务 关闭防火墙,将安装 ngnix 所需的软件包上传到 /opt 目录下 安装依赖包 编译安装Nginx 创建运行用户.组 检查.启动.重载配.停止Nginx 增加Nginx系统服 ...

  2. LNMP之Nginx服务搭建及三种类型虚拟主机

    目录 1 什么是Nginx 1.1 Nginx可运行的操作系统 1.2 Nginx重要特性 1.3 企业面试需要解答如下Nginx HTTP服务的特色及优点 1.4 Nginx作为Web服务器的主要应 ...

  3. nginx 访问状态统计 访问控制 虚拟主机

    文章目录 一.访问状态统计 二.访问控制 基于授权的访问控制 基于客户端的访问控制 三.虚拟主机 基于域名 基于IP 基于端口 一.访问状态统计 首先使用/usr/local/nginx/sbin/n ...

  4. Web服务器群集--Nginx网站服务(运行控制,访问状态统计,基于授权和客户端的访问控制,基于域名,端口,IP的虚拟web主机访问)

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

  5. nginx 根据目录指定root_部署Nginx网站服务实现访问状态统计以及访问控制功能

    Nginx专为性能优化而开发,最知名的优点是它的稳定性和低系统资源消耗,以及对HTTP并发连接的高处理能力,单个物理服务器可支持30000-50000个并发请求. Nginx的安装文件可以从官方网站h ...

  6. 详解 nginx 配置文件及构建 web 虚拟主机

    详解 nginx 主配置文件.添加服务及构建 web 虚拟主机 一.添加为系统服务 1.方法一 2.方法二 二.nginx 主配置文件 nginx.conf 1.全局配置 2.I/O 事件配置 3.H ...

  7. Nginx_01_Nginx三大基础功能(静态服务器、虚拟主机、负载均衡/服务端代理)

    文章目录 一.前言 二.Nginx三大功能--HTTP服务器 三.Nginx三大功能--虚拟主机 3.1 虚拟主机 3.2 Nginx配置文件的结构 3.3 Nginx三种虚拟主机方式--基于ip的虚 ...

  8. 云计算基础服务(四) http协议--虚拟主机

    创建存放网页的目录,并写入自己想写的内容 想要自己创建的网页可以被访问,必须在服务器上面添加主机记录 重启服务器的服务 创建文件,并添加虚拟主机所需要的内容 重启服务  然后windows验证 lin ...

  9. linux apache 多域名配置,apache-2.4.12基于域名访问的多虚拟主机配置

    apache-2.4.12基于域名访问的多虚拟主机配置 原始配置: ServerAdmin kk@etiantian.org DocumentRoot "/data/cms" Se ...

最新文章

  1. 网站关键词如何布局更有利于关键词排名提升?
  2. MongoDB与PHP的添加、修改、查询、删除
  3. linux shell 计算器 除0,用shell写一个简易计算器,可以实现加、减、乘、除运算,假如脚本名字为1.sh,执行示例:./1....
  4. 多路 IO 转接 :poll 函数
  5. MySQL——数据库和表的增删改查
  6. geforce experience不能登录_青椒第二课堂禁毒平台|官方网站登录
  7. Solr相关概念详解:SolrRequestHandler
  8. 网页中竖的目录怎么改成横的_一点基础也没有,想快速练漂亮硬笔字,先练什么?怎么练进步明显?...
  9. JS 实战2(邮箱选人功能)
  10. Qt使用MSVC编译器关闭“warning: C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失”警告的方法
  11. nodejs npm和yarn 源管理模块 yrm(记录方便查看)
  12. python数据库操作——Oracle超详细安装过程
  13. Android学习资料整理:流行框架网站书籍推荐---博客推荐
  14. [我读]十四堂人生创意课
  15. MySQL基于位置的恢复
  16. Spring Security技术栈学习笔记(十三)Spring Social集成第三方登录验证开发流程介绍
  17. 使用两个无线路由器实现桥接中继
  18. 东风破 苏轼 喜欢的词,方文山的歌词好象就是这样借过来的。
  19. ZLG_USBCAN-Ⅱ+ 设置滤波问题
  20. 谈谈现在低价U盘的质量问题

热门文章

  1. 使用flex垂直居中(超简单)
  2. Linux(/)根目录下各个文件夹的含义及使用
  3. 电磁波的频率与波长的关系
  4. 《Python语言基础与应用》北京大学慕课课堂章节四测试
  5. windows版本的docker安装es和es插件
  6. public partial class Form1 : Form partial 是什么意思?
  7. C语言 实现 KMP算法
  8. 未能注册模块 HSIDCandRead.ocx HRESULT -2147010895
  9. android真机调试问题,看不到logcat信息
  10. Anroid手机apk安装