05.18 nginx之web服务

本文详细介绍了Nginx服务器的特色、优点,包括其高并发和资源消耗少的特性,以及作为Web服务、反向代理和缓存服务的角色。讲解了Nginx的安装步骤、配置虚拟主机、状态统计、重写规则以及日志管理,提供了排错方法和日志切割方案,旨在帮助企业更好地利用Nginx提升服务性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一章 Nginx服务器的特色及优点

  1. 支持高并发:能支持几万并发连接(特别是静态小文件业务环境)。
  2. 资源消耗少:在3万并发连接下,开启10个Nginx线程消耗的内存不到200M。
  3. 可以做HTTP反向代理及加速缓存、即负载均衡功能,内置对RS节点服务器健康检查功能,这相当于专业的 Haproxy软件或LVS的功能。
  4. 具备Squid等专业缓存软件等的缓存功能。
  5. 支持异步网络I/O事件模型epoll(2.6+)。

第二章 Nginx软件的企业功能应用

1. 作为Web服务软件
Nginx是一个支持高性能、高并发的Web服务软件,它具有很多优秀的特性,作为Web服务器,与Apache相比,Nginx能够支持更多的并发连接访问,但占用的资源却很少,效率更高,在功能上也强大了很多,几乎不逊色与Apache。

2. 反向代理或负载均衡服务
在反向代理或负载均衡服务方面,Nginx可以作为Web服务,PHP等状态服务Memcached缓存的代理服务器,它具有类似专业反向代理软件(如Haproxy)的功能,同时也是一个优秀的邮件代理服务软件,但是Nginx的代理功能还是相对简单了解,特别是不支持TCP的代理。

3. 前端业务数据缓存服务
在Web缓存服务方面,Nginx可通过自身的proxy_cache模块实现类Squid等专业缓存软件的功能。Nginx的这三大功能(Web服务,反向代理或负载均衡服务、前端业务数据缓存服务)是国内使用Nginx的主要场景,特别是前两个。


第三章 为什么Nginx总体性能比Apache高

Nginx使用最新的epoll(Linux 2.6内核)和Kqueue(freebsd)异步网络I/O模型,而Apache使用的是传统的select。目前Linux下能够承受高并发访问的Squid、Memcached软件采用的都是epoll模型。


第四章 nginx服务安装步骤

1. 安装支持软件包

 [root@web02 ~]# yum install pcre-devel openssl-devel -y

2. 进入编译安装目录

[root@web02 ~]# cd /home/oldboy/tools/

3. 下载软件包

[root@web02 tools]# wget http://nginx.org/download/nginx-1.10.2.tar.gz

4. 解压软件包

[root@web02 tools]# tar xf nginx-1.10.2.tar.gz

5. 创建www用户

[root@web03_9 nginx-1.10.2]# useradd -s /sbin/nologin -M www

6. 配置./configure

./configure  --prefix=/application/nginx-1.10.2 --user=www --group=www --with-http_stub_status_module  --with-http_ssl_module
[root@web02 nginx-1.10.2]# echo $?

7. 编译 把软件翻译为Linux语言

make

8. 编译安装 根据翻译后的信息把软件安装好

make install

9. 查询帮助

[root@web02 nginx-1.10.2]# ./configure --help

10. 创建软链接-以免以后升级减少开发麻烦

[root@web02 application]# ln -s /application/nginx-1.10.2/ /application/nginx

11. 查询帮助命令

[root@web02 application]# /application/nginx/sbin/nginx -h

12. 启动nginx程序

[root@web03_9 nginx-1.10.2]# /application/nginx/sbin/nginx

13. 查看http服务端口

[root@web02 application]# ss -lntup|egrep 80

14. 查看进程信息

[root@web02 application]# ps -ef |egrep nginx

15. 能够识别支持的文件名

[root@web02 nginx]# cat /application/nginx/conf/mime.types

16. 查看安装nginx时使用的参数 怎么安装的

[root@web02 nginx]# /application/nginx/sbin/nginx -V

第五章 /application/nginx目录结构

[root@web02 nginx]# tree
.
├── client_body_temp
├── conf                               <- #这是Nginx所有配置文件的目录,极其重要
│   ├── fastcgi.conf                  <- #fastcgi相关参数的配置文件
│   ├── fastcgi.conf.default          <- #fastcgi.conf的原始备份
│   ├── fastcgi_params                <- #fastcgi的参数文件
│   ├── fastcgi_params.default
│   ├── koi-utf
│   ├── koi-win
│   ├── mime.types                    <- #媒体类型
│   ├── mime.types.default
│   ├── nginx.conf                    <- #这是nginx默认的主配置文件
│   ├── nginx.conf.default
│   ├── scgi_params                   <- #scgi相关参数文件
│   ├── scgi_params.default
│   ├── uwsgi_params                  <- #uwsgi相关参数文件
│   ├── uwsgi_params.default
│   └── win-utf
├── fastcgi_temp                       <- #fastcgi临时数据目录。
├── html                               <- #这是编译安装时Nginx的默认站点目录,前面已说明,类似Apa
                                               che的默认站点htdocs目录,相当于网站根目录。
│   ├── 50x.html                      <- #错误页面优雅替代显示文件,例如:出现502错误时会调用
                                               error_page 500 502 503 504 /50x.html。
│   └── index.html                    <- #默认的首页文件,在实际环境中,大家习惯用(不是必须)
                                               index.html index.php index.jsp来做网站的首页文件。
├── logs                               <- #这是Nginx默认的日志路径,包括错误日志及访问日志。
│   ├── access.log                    <- #这是Nginx的默认访问日志文件,使用tail -f access.log
                                                可以实现观看网站用户情况信息。
│   ├── error.log                     <- #这是Nginx的错误日志文件,如果Nginx出现启动故障问题
                                               一定要看看这个错误日志。
│   └── nginx.pid                     <- #Nginx的pid文件,Nginx进程启动后,会把所有进程的ID号
                                               写到此文件。
├── proxy_temp                         <- #临时目录。
├── sbin                               <- #这是Nginx命令的目录,如Nginx的启动命令nginx。
│   └── nginx                         <- #Nginx的启动命令nginx。
├── scgi_temp                          <- #临时目录
└── uwsgi_temp                         <- #临时目录

第六章 简化路径别名/变量/软链接

/application/nginx/sbin/nginx -s reload
# 01: 把这个/application/nginx/sbin/设置成PATH环境变量
# 02:做一个软链接 ln -s /application/nginx/sbin/nginx  /usr/bin/nginx^C
# 03: 配置别名

第七章 nginx虚拟主机概念介绍

所谓虚拟主机,在Web服务里就是一个独立的网站站点,这个站点对应独立的域名(也可能是IP或端口),具有独立的程序及资源目录,可以独立地对外提供服务供用户访问。
这个独立的站点在配置里由一定格式的标签段标记的,对于Apache软件来说,一个虚拟主机的标签段通长被包含在内,而Nginx软件则使用一个server{}标签来标示一个虚拟主机,一个Web服务里可以有多个虚拟主机标签对,即可以同时支持多个虚拟主机站点。


第八章 nginx配置虚拟主机的步骤

1.增加一个完整的server标签段到结尾处。注意,要放在http的结束大括号前,也就是将server标签段放入http标签。

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

2.检查Nginx配置文件语法,平滑重启Nginx服务,快速检查启动结果。

[root@web02 ~]$ /application/nginx/sbin/nginx -t
nginx: the configuration file /application/nginx-1.10.2/conf/nginx.conf syntax is ok
nginx: configuration file /application/nginx-1.10.2/conf/nginx.conf test is successful

[root@web02 ~]$ /application/nginx/sbin/nginx -s reload

3.在客户端对server_name处配置的域名做host解析或DNS配置,并检查(ping域名看返回的IP是否正确)

正在 Ping www.qunchao.com [10.0.0.7] 具有 32 字节的数据:
来自 10.0.0.7 的回复: 字节=32 时间<1ms TTL=64
来自 10.0.0.7 的回复: 字节=32 时间<1ms TTL=64
来自 10.0.0.7 的回复: 字节=32 时间<1ms TTL=64

4.在Win32浏览器中输入地址访问,或者在Linux客户端做hosts解析,用wget或curl接地址访问。

[root@web02 ~]$ curl www.shaoxue.com
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>

<body>
<img src="219798.jpg" width="1920" height="16280" />
</body>
</html>

[root@web02 ~]$ wget www.shaoxue.com
--2017-05-20 11:13:26--  http://www.shaoxue.com/
Resolving www.shaoxue.com... 10.0.0.7
Connecting to www.shaoxue.com|10.0.0.7|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 360 [text/html]
Saving to: “index.html.1

第九章 nginx状态统计status

  server {
        listen       80;
        server_name  status.qunchao.com;
          stub_status on;
          access_log  off;}
Active connections: 7                 #nginx正处理的活动连接数
server accepts handled requests
 65 65 305                            #共处理多少个连接  #成功创建多少次握手  #总共处理了多少次请求
Reading: 0 Writing: 1 Waiting: 6      
Active connections: 7                 #nginx正处理的活动连接数
server accepts handled requests
 65 65 305                            #共处理多少个连接  #成功创建多少次握手  #总共处理了多少次请求
Reading: 0 Writing: 1 Waiting: 6      

第十章 nginx服务重写rewrite跳转

    server {
        listen       80;
        server_name  www.xue.com;
        location / {
            root   html/www;
            index  index.html index.htm;
            rewrite ^/(.*) http://www.baidu.com/$1 permanent;
        }
        access_log  logs/access_www.log  main;
    }

应用场景

  1. 可以调整用户浏览的URL,使其看起来更规范,合乎开发及产品人员的需求。
  2. 为了让搜索引擎收录网站内容,并让用户体验更好,企业会将动态URL地址伪装成静态地址提供服务。
  3. 网站换新域名后,让旧域名的访问跳转到新的域名上,例如:让京东的360buy换成了jd.com
  4. 根据特殊变量、目录、客户端的信息进行URL跳转等。

第十一章 nginx排错过程说明

  1. 第一步:在客户端上ping服务器端ip,ping 10.0.0.7
  2. 第二部:在客户端上telnet服务器端IP
  3. 第三部:在服务端使用wget命令检测 wget 10.0.0.7(curl -I 10.0.0.7)

第十二章 nginx日志配置

server {
        listen       80;
        server_name  www.shaoxue.com;
        location / {
            root   html/www;
            index  index.html index.htm;}
            access_log logs/www_access.log

访问日志文件

tailf ../../logs/access.log
10.0.0.253 - - [20/May/2017:12:21:49 +0800] "GET /favicon.ico HTTP/1.1" 404 571 "http://www.shaoxue.com/" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"

第十三章 nginx服务日志变量

Nginx日志变量说明
$remote_addr记录访问网站的客户端地址;即源IP地址
$http_x_forwarded_for当前端有代理服务器时,设置web节点记录客户端地址的配置,此参数生效的前提是代理服务器上也进行了相关的x_forwarded_for设置可以记录用户真实的IP地址信息
$remote_user远程客户端用户名称
$time_local记录访问时间与地区
$request用户的http请求起始行信息
$statushttp状态码,记录请求返回的状态,例如200 404 301等
$body_bytes_sents服务器发送给客户端的响应body字节数
$http_refere记录此次请求是从哪个链接访问过来的,可以根据referer进行防盗链设置即表示是哪个网站介绍过来的
$http_user_agent记录客户端访问信息,例如:浏览器,手机客户端等。

第十四章 nginx日志切割

mv /application/nginx/logs/access.log /application/nginx/logs/access_$(date +%F -s -1day).log
[root@web02 ~]$ /application/nginx/sbin/nginx -s reload
可以编写脚本,然后加入定时任务,每天00:00执行一次!

第十五章 网站日志收集整理的工具

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值