• nginx网站服务概述


    目录

    一.nginx概述

    (1)nginx介绍

    (2)nginx特点

    1)高性能,高并发

    2)轻量且高扩展性

    3)高可靠性

    4) 支持热部署

    5) 大多数公司都在用nginx

    6) Nginx使用的是Epool网络模型

    7)nginx应用场景

    (3)Nginx和Apache之间对比

    二者区别:

    (4)nginx的HTTP七层代理和四层代理

    二.介绍nginx服务的配置文件nginx.conf

    (1)全局配置

    (2)i/o事件配置

    (3)http配置

    (4)、日志格式设定


    一.nginx概述

    (1)nginx介绍

    Nginx是web服务软件

    Nginx是一个开源且高性能、可靠的http web服务、代理服务

    Nginx是俄罗斯的一个程序员开发的

    Nginx的几种特性:

    开源       直接获取源代码

    高性能    支持海量开发

    可靠       服务稳定

    (2)nginx特点

    1)高性能,高并发

    nginx支持很高的并发,nginx在处理大量并发的情况下比其他web服务要快

    2)轻量且高扩展性

    轻量

    功能模块少,只保留核心模块,其他代码模块化 (易读,便于二次开发,对于开发人员非常友好)

    高扩展性

    需要什么模块再安装模块,不需要全部安装,并且还支持第三方模块

    3)高可靠性

    只要不过分几乎不会出现问题

    其他的web服务需要每隔一段时间进行重启,nginx不需要

    nginx的宕机时间,是99999级别

    4) 支持热部署

    nginx可以再运行期间,更新迭代,代码部署

    5) 大多数公司都在用nginx

    1.Nginx技术成熟,具备的功能是企业最常使用而且最需要的

    2.适合当前主流架构趋势, 微服务、云架构、中间层

    3.统一技术栈, 降低维护成本, 降低技术更新成本。

    6) Nginx使用的是Epool网络模型

    Select: 当用户发起一次请求,select模型就会进行一次遍历扫描,从而导致性能低下。

    Epoll: 当用户发起一次请求,epoll模型会直接进行处理,效率高效,并无连接限制。

    7)nginx应用场景

    (3)Nginx和Apache之间对比

    网络模型:

    select 性能最低

    poll 性能稍好

    epoll 性能最强

    Select: 当用户发起一次请求,select模型就会进行一次遍历扫描,从而导致性能低下。

    Epoll: 当用户发起一次请求,epoll模型会直接进行处理,效率高效,并无连接限制。

    Apache 使用的是select网络模型

    Nginx 使用的是Epoll网络模型

    二者区别:

    1:nginx是轻量级,比apache占用更少的内存以及资源

    2:apache比nginx的rewrite强大,模块多,bug少,稳定性强,

    3:apache对php支持比较简单,nginx需要配合其他后端用,apache组件比nginx多,现在nginx是web服务器的首选

    4:最核心的区别是apache是同步多进程模型,一个连接对应一个进程,多个连接(千万级别)可以对应一个进程

    5:nginx:配置文件写的很简洁,正则配置让很多事情变得简单运行效率高,占用资源少,代理功能强大,很适合做前端响应服务器

    6:Apache在处理动态有优势,Nginx并发性比较好,CPU内存占用低,如果rewrite频繁,那还是Apache吧

    7:动态请求要apache去做,nginx只适合静态和反向

    (4)nginx的HTTP七层代理和四层代理

    nginx的http七层代理,其实它工作在OSI七层模型的应用层。由于其可以解析http协议,我们可以根据URI进行请求的分发,具有很大的灵活性,但是协议的解析存在性能的消耗。为了能获取更高的代理性能,

    nginx支持了四层代理,即传输层,就是我们常说的TCP/UDP层,没有协议解析,就是简单的TCP/UDP转发,代理性能突飞猛进,该功能依赖于ngx_http_upstream_module和ngx_stream_upstream_module,互联网公司将其作为入口代理来工作。(版本在1.18之上才支持)

    二.介绍nginx服务的配置文件nginx.conf

    (1)全局配置

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

    #user nobody;                 #运行用户,若编译时未指定则默认为 nobody

    worker_processes 1;           #工作进程数量,可配置成服务器内核数 * 2

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

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

    (2)i/o事件配置

    events {

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

        worker_connections 1024;     #每个进程处理 1024个连接

    }

    #如提高每个进程的连接数还需执行“ulimit -n 65535”(临时调整)命令临时修改本地每个进程可以同时打开的最大文件数。

    #在Linux 平台上,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制

    #可使用ulimit -a 命令查看系统允许当前用户进程打开的文件数限制。

    (3)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" '

        #                  '"$http_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 {                                    #web 服务相关的一些配置

            listen       80;                        #默认监听端口

            server_name  localhost;                    #站点域名, ⭐需要修改 www.gg.com

            #charset koi8-r;                        #字符集支持(修改为中文)UTF-8

            #access_log  logs/host.access.log  main;    #此web服务的主访问日志

            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.html

            #

            error_page   500 502 503 504  /50x.html;    #当发生错误的时候能够显示一个预定义的错误页面

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

                root   html;                           

            }

            # proxy(代理) the PHP scripts to Apache listening on 127.0.0.1:80            #以下是支持PHP及跳转的配置

            #

            #location ~ \.php$ {                       

            #    proxy_pass   http://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 configuration

        #

        #server {                                                            ##虚拟主机的配置

        #    listen       8000;

        #    listen       somename:8080;

        #    server_name  somename  alias  another.alias;

        #    location / {

        #        root   html;

        #        index  index.html index.htm;

        #    }

        #}

        # HTTPS server                                                        ##HTTPS的配置(SSL 加密)

        #

        #server {

        #    listen       443 ssl;

        #    server_name  localhost;

        #    ssl_certificate      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;

        #    }

        #}

    }

    (4)、日志格式设定

    $remote_addr与$http_x_forwarded_for用以记录客户端的ip地址;

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

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

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

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

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

    $http_referer:用来记录从哪个页面链接访问过来的;

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

    通常web服务器放在反向代理的后面,这样就不能获取到客户的IP地址了,通过$remote_add拿到的IP地址是反向代理服务器的iP地址。反向代理服务器在转发请求的http头信息中,可以增加x_forwarded_for信息,用以记录原有客户端的IP地址和原来客户端的请求的服务器地址。

    location常见配置指令,root、alias、proxy_pass

    root(根路径配置):root /var/www/html

    请求www.kgc.com/test/1.html,会返回文件/var/www/html/test/1.html

    alias(别名配置):alias /var/www/html

    请求www.kgc.com/test/1.html,会返回文件/var/www/html/1.html

    proxy_pass(反向代理配置)

  • 相关阅读:
    树莓派开机自动播放U盘里的照片和视频
    第二届上汽零束SOA平台开发者大会揭幕,智能汽车生态加速落地
    ThingsBoard如何自定义tcp-transport
    Linux文件元数据操作
    室分知识点整理版
    拿到第一个用户并提权
    洗地机怎么选?2023年洗地机推荐
    基于Java的图书管理系统(附:源码和课件)
    JDK21# 虚拟线程vs平台线程
    使用开源Cesium+Vue实现倾斜摄影三维展示
  • 原文地址:https://blog.csdn.net/a_b_e_l_/article/details/126576512