nginx网站服务

nginx的了解

nginx的特性:

1.io多路复用

2.高性能

3.高并发

4.占用资源少

nginx有哪些优点?

1.跨平台,配置简单

2.非阻塞、高并发连接:处理2-3万并发连接数,官方检测能支持5万并发,而apache只能1万。

3.内存消耗小

4.成本低,且开源

5.稳定性高,宕机概率非常小

6.内置健康检查功能:如若服务器宕机,会做健康检查,之后收到的请求就不会发送给宕机服务器了,转而发送给其他节点。

nginx应用场景

1.http服务器

2.虚拟主机

3.反向代理,负载均衡

4.安全管理

5.可以做缓存服务器

nginx和apache的区别

nginx apache
nginx是一个基于时间的web服务器 apache是一个基于流程的服务器
所有请求都由一个线程处理 单个线程处理单个请求
nginx避免子进程的概率 apache是基于子进程的
nginx占用资源和内存少 apache占用资源和内存多
处理请求异步非阻塞,在高并发下能保持低资源,低消耗,高性能 处理请求阻塞
编写模块简单 编写模块复杂

编译安装nginx

编译安装过程

#关闭防火墙,将安装nginx所需软件包传到/opt目录下
systemctl stop firewalld
setenforce 0
cd /opt
nginx-1.12.0.tar.gz


yum -y install pcre-devel zlib-devel gcc gcc-c++ make
#nginx的配置及运行需要pcre、zlib等软件包的支持,因此需要安装这些安装的开发包,以便提供相应的库和头文件。

useradd -M -s /sbin/nologin nginx 
#创建运行用户、组(Nginx服务程序默认以nobody 身份运行,建议为其创建专门的用户账号,以便更准确地控制其访问权限)

tar zxvf nginx-1.12.0.tar.gz -C /opt/
cd nginx-1.12.0/
./configure \
--prefix=/usr/local/nginx \     #指定nginx的安装路径
--user=nginx \                  #指定用户名
--group=nginx \                 #指定组名
--with-http_stub_status_module  #启用http_ _stub_ status_ module模块以支持状态统计


make -j 4 && make install
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/


 

检查、启动、重启、停止Nginx服务

检查配置文件是否配置正确

nginx -t ​

启动

nginx

停止nginx

#先查看nginx的pid号

cat /usr/local/nginx/logs/nginx.pid

kill -3 pid号              #可以优雅的停止进程:让他先把事情处理完再解决

killall -3 nginx

kill -s quit (pid号)

killall -s quit nginx

nginx -s stop 停止nginx

nginx -s quit 停止nginx

重载

kill -1 (pid号)

kill -s hup (pid号)

killall -1 nginx

killall -s HUP nginx

nginx平滑升级的步骤

1.首先先去官网上下载新版本的软件包

tar -zxvf nginx-1.xx.xx.tar.gz

2.进行解压配置编译

cd nginx-1.xx.xx

./configure \ --prefix=/usr/local/nginx \

--user=nginx \

--group=nginx \

--with-http_stub_status_module \

--with-http_ssl_module

make

3.生成二进制文件,将老版本二进制文件进行备份,防止版本回退

mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_old

4.把更新好的程序复制过来进行替换

cp objs/nginx /usr/local/nginx/sbin/nginx

5.执行make upgrade,完成平滑升级

  或者先killall nginx,再/usr/local/nginx/sbin/nginx

nginx的最大并发如何查看和设置

理论上查看nginx最大并发:查看他的配置文件

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



worker processes (worker工作进程数,一般设置与CPU数量相同,或auto)



*worker_connections (每个worker进程能够处理的连接数)



真正实现的话要去设置

应用级别的打开文件数和系统级别的打开文件数



应用级别:

worker rlimit nofile (worker进程最大可以打开的文件数)



系统级别:

ulimit -n
/etc/security/limits.conf
nofile 

认识nginx服务的主配置文件

nginx网站服务_第1张图片

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

1.全局块:全局配置,对全局生效

2.events块:配置影响nginx服务器与用户的网络连接

3.http块:配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置

4.server块:配置虚拟主机的相关参数,一个http块中可以有多个server块

5.location块:用于配置匹配的uri

6.upstream:配置后端服务器具体地址,负载均衡配置不可或缺的部分

1.全局配置

user nobody
#运行用户,默认为nobody

worker_processes 1
#设置进程数,设置为auto,nginx将会自己获取这个数值

error_log logs/error.log
#错误日志文件的位置

pid logs/nginx.pid
#pid文件的位置

worker_rlimit_nofile 65535
#设置所有worker进程最大可以打开的文件数,默认为1024

2.I/O事件配置

events {
      use epoll;
      #使用 epoll I/0模型,2.6及以上版本的系统内核,建议使用epoll模型以提高nginx性能

      worker_connections 65535;
      #设置进程连接数,每个进程处理 65535 个连接

}

#永久设置可打开最大文件数 
   vim /etc/security/limits.conf nginx hard nofile 10000 用户名 硬限制 最大进程数 进程数


ulimit -a #查看可同时打开文件数

3、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;
    ##此选项允许或禁止使用socket的TCP_CORK的选项(发送数据包前先缓存数据),此选项仅在使用sendfile的时候使用
    #tcp_nopush  on;
   

   ##连接保持超时时间,单位是秒
   #keepalive_timeout 0;
     keepalive_timeout 65;
   

  ##gzip模块设置,设置是否开启gzip压缩输出
     #gzip on;
​
   ##Web服务的监听配置
   server {
       

            ##监听地址及端口
               listen 80;
       

           ##站点域名,可以有多个,用空格隔开
             server name www.kgc.com;
       
           ##网页的默认字符集
             charset utf-8;
      
           ##根目录配置
              location / {
                   

                    ##网站根目录的位置/usr/local/nginx/html
                      root html ;
                   

                     ##默认首页文件名
                      index index.html index.php;
                 }
               

                ##内部错误的反馈页面
                error_page 500 502 503 504 /50x.html;
              

                ##错误页面配置
                location = /50x.html {
                 root html;
               }
       }
}

日志格式设定:

$remote_addr(记录的是上个节点的ip)与$http_x_forwarded_for(会记录数据包经过的所有的ip)用以记录客户端的ip地址;

$remote_user:用来记录客户端用户名;

$time_local: 用来记录访问时间与时区;

$request: 用来记录请求的url路径与http协议;

$status: 用来记录请求状态;成功是200,

$body_bytes_sent :记录发送给客户端文件主体内容大小(响应体大小);

$http_referer:用来记录从哪个页面链接访问过来的(如果数据包经过转发他会记录下

来);

$http_user_agent:记录客户浏览器的相关信息;

nginx的root和alias指定路径的区别

root:根目录

location  /test {

​       root/var/www;

}

处理方式:root路径+location路径  

 http://192.168.116.40/test/abc.html   ——> /var/www/test/abc.html

alias:虚拟目录、别名目录

location/test  {

         alias /var/www;
 
}

处理方式:alias路径替换location路径  

http://192.168.116.40/test/abc.html ———>/var/www/abc.html

nginx访问状态统计

1.安装时添加--with-http_stub_status_module模块

2.修改nginx配置文件添加stub_status on; (开启状态统计功能) access_log 0ff;配置

3测试验证curl -Ls xxx

nginx 授权访问控制

安装htp

1.使用htpasswd生成用户认证文件,并修改权限和归属

2.修改nginx配置文件添加auth_basic auth_basic_user_file(指定认证文件路径)配置

3.测试验证

nginx客户端访问控制

http{ } :所有站点生效

server{ }:只在当前站点中生效

location{ }:只在当前站点的指定URL路径进行生效

在他们中添加配置

白名单:allow ip/网段(一行只能配置一个ip或者网段)

deny all

黑名单:deny ip/网段

nginx虚拟主机:server { }

基于域名:server_name

基于ip:listen ip:端口(根据不同的ip)

基于端口:listen ip:端口(根据不同的端口)

基于授权的访问控制

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

yum install -y httpd-tools

htpasswd -c /usr/local/nginx/passwd.db zhangsan
#htpasswd创建用户时的认证数据文件,里面去指定用户密码

chown nginx /usr/local/nginx.passwd.db
chmod 400 /usr/local/nginx/passwd.db

2、修改主配置文件相对应目录,添加认证配置项

vim /usr/local/nginx/conf/nginx.conf
.....
   server {
      location / {
       .....
      ##添加认证配置##
    auth_basic "secret";     #设置密码提示框文字信息
    auth_basic_user_file /usr/local/nginx/passwd.db;
    }
}

3、重启服务,访问测试

nginx -t
systemctl restart nginx
浏览器访问 http://192.168.116.40

 nginx网站服务_第2张图片

你可能感兴趣的:(nginx,运维)