Linux之nginx

1,nginx入门

想必我们大多数人都是通过访问网站而开始接触互联网的吧。我们平时访问的网站服务 就是 Web 网络服务,一般是指允许用户通过浏览器访问到互联网中各种资源的服务。

Web 网络服务是一种被动访问的服务程序,即只有接收到互联网中其他主机发出的 请求后才会响应,最终用于提供服务程序的 Web 服务器会通过 HTTP(超文本传输协议)或 HTTPS(安全超文本传输协议)把请求的内容传送给用户。

目前能够提供 Web 网络服务的程序有 IIS、Nginx 和 Apache 等。其中,IIS(Internet Information Services,互联网信息服务)是 Windows 系统中默认的 Web 服务程序

2004 年 10 月 4 日,为俄罗斯知名门户站点而开发的 Web 服务程序 Nginx 横空出世。 Nginx 程序作为一款轻量级的网站服务软件,因其稳定性和丰富的功能而快速占领服务器市 场,但 Nginx 最被认可的还当是系统资源消耗低且并发能力强,因此得到了国内诸如新浪、 网易、腾讯等门户站的青睐。

2,web服务器和web框架的关系

  • web服务器(nginx):接收HTTP请求(列如www.pythonav.cn/xiaocang.jpg)并返回数据
  • web框架(django,flask):开发web应用程序,处理接收到的数据

3,nginx是什么?

nginx是一个开源的,支持高性能的,高并发的www服务和代理服务软件,它是一个俄罗斯人lgor sysoev开发的,
作者将源代码开源出来供全球使用, nginx比大哥apache性能先进的多,nginx占用的系统资源更少,支持更高的并发连接,有更高的访问频率,
nginx不但是一个优秀的web服务软件,还可以作为反向代理,
负载均衡,以及缓存服务使用 安装更为简单, 方便, 灵活 nginx可以说是非常强大了

4,安装

  • 解决依赖关系编译依赖gcc环境,所以先要安装gcc环境
    • yum install gcc patch libffi-devel python-devel  zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel openssl openssl-devel -y
  • 下载源码包
    • wget -c https://nginx.org/download/nginx-1.12.0.tar.gz
  • 解压缩源码包
    • tar -zxvf nginx-1.12.0
  • 在当前路径下通过configure这个脚本文件执行,释放makefile, 然后指定安装nginx的路径
    • ./configure --prefix=/opt/nginx1-12/ --with-http_ssl_module --with-http_stub_status_module
  • 编译且编译安装
    • make && make install
  • 在/opt/nginxnginx1-12/安装好nginx的目录,找到一个sbin的文件夹,找到启动命令,然后启动nginx服务
    • 检查安装后目录, ll/opt/nginx1-12
  • 启动nginx的服务
    • sbin/nginx
  • 停止nginx服务
    • sbin/nginx -s stop
  • 平滑重启(修改nginx配置文件, 不重启服务就加载配置且生效)
    • sbin/ndinx -s reload
  • 检测ngnix.conf配置文件的语法正确性
    • sbin/nginx -t
  • 检查端口,进程,然后通过修改浏览器nginx页面, ip地址
  • 虚拟主机:
  • server{
      listen     80;
    
      server_name     www.xuexue.com;  # 这里是nginx通过这个参数,来定位不同的虚拟机代表访问nginx的匹配路径  
    
       location / {
           # 指明网页根目录在/data/xuexue/文件夹下
           root  /data/xuexue/;
           index  index.html index.html
    }
    }
    server{
          listen     80;
          server_name    www.xiaoxue.com;
          location / {
                     # 指明网页根目录在/opt/html/文件夹下
                     root /data/xiaoxue;
                     index index.html index.html;
    }
    }
  • 重新加载nginx配置文件
    • sbin/nginx -t   # 检查语法
    • sbin/nginx -s reload   # 平滑重启
  • 去data里边创建xuexue和xiaoxue2个文件夹放入不同的资料
  • 写入本地dns解析文件,由于是在windows中的hosts中添加记录,hosts文件就是一个本地dns(就是域名转化成ip地址)强制解析的文件

  • windows的hosts文件在:C/Windows/System32/driver/etc/hosts,写入如下信息
  • 192.168.12.49      www.xuexue.com
  • 192.168.12.49      www.xiaoxue.com

5,nginx状态模块功能

  • 在配置文件中,添加一个参数即可
    • location/status{
    •     stub_status on;
    • }
  • nginx访问日志功能
  • 在配置中,打开注释, nginx.conf
    • 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;
  • 参数详解:
    • $remote_addr 记录客户端ip
    • $remote_user  远程用户, 没有就是"-"
    • $time_local      对应[14/Aug/2018:18:46:52 +0800]
    • $request           对应请求信息"GET/favicon.ico HTTP/1.1"
    • $status              状态码
    • $body_bytes_sent     571字节 请求体的大小
    • $http_referer       对应"-"     由于是直接输入浏览器就是-
    • $http_user_agent      客户端身份信息
    • $http_x_forword_for     记录客户端的来源真实ip
  • 1.在配置文件中添加  nginx.conf 
        server {
                listen       80;
                server_name  www.s14huoying.com;
                location / {
                    #指明网页根目录在/opt/html/文件夹下
                    root   /data/huoying;
                    index  index.html index.htm;
                    deny 192.168.12.120;
                }
                error_page  400 401 402 404   /40x.html;
                #当请求来自于wwww.s14huoying.com/status/
        }
原文地址:https://www.cnblogs.com/ljc-0923/p/10265321.html