千家信息网

nginx中通过配置http服务器实现动静分离)

发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,这篇文章给大家介绍nginx中通过配置http服务器实现动静分离),内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。安装我下载的是1. 14.2 如图配置介绍nginx.conf配置
千家信息网最后更新 2025年02月03日nginx中通过配置http服务器实现动静分离)

这篇文章给大家介绍nginx中通过配置http服务器实现动静分离),内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

安装

  • 我下载的是1. 14.2 如图

配置介绍

nginx.conf配置文件

Nginx配置文件主要分成四部分:main(全局设置)、server(主机设置)、upstream(上游服务器设置,主要为反向代理、负载均衡相关配置)和 location(URL匹配特定位置后的设置),每部分包含若干个指令。main部分设置的指令将影响其它所有部分的设置;server部分的指令主要用于指定虚拟主机域名、IP和端口;upstream的指令用于设置一系列的后端服务器,设置反向代理及后端服务器的负载均衡;location部分用于匹配网页位置(比如,根目录"/","/images",等等)。他们之间的关系式:server继承main,location继承server;upstream既不会继承指令也不会被继承。它有自己的特殊指令,不需要在其他地方的应用。

#main全局配置{   #events模块   #http模块{      #server配置(重点)   }}

详细配置如下

#main全局配置user  www www;       #指定nginx进程使用什么用户启动worker_processes 4;  #指定启动多少进程来处理请求,一般情况下设置成CPU的核数,如果开启了ssl和gzip更应该设置成与逻辑CPU数量一样甚至为2倍,可以减少I/O操作。使用grep ^processor /proc/cpuinfo | wc -l查看CPU核数。worker_cpu_affinity 0001 0010 0100 1000; #在高并发情况下,通过设置将CPU和具体的进程绑定来降低由于多核CPU切换造成的寄存器等现场重建带来的性能损耗。如worker_cpu_affinity 0001 0010 0100 1000; (四核)。error_log /data/logs/nginx_error.log crit; #error_log是个主模块指令,用来定义全局错误日志文件。日志输出级别有debug、info、notice、warn、error、crit可供选择,其中,debug输出日志最为最详细,而crit输出日志最少。#pid /usr/local/webserver/nginx/nginx.pid; #指定进程pid文件的位置。worker_rlimit_nofile 65535;: 用于指定一个nginx进程可以打开的最多文件描述符数目,这里是65535,需要使用命令"ulimit -n 65535"来设置。#events模块events{  use select;        #use是个事件模块指令,用来指定Nginx的工作模式。Nginx支持的工作模式有select、poll、kqueue、epoll、rtsig和/dev/poll。其中select和poll都是标准的工作模式,kqueue和epoll是高效的工作模式,不同的是epoll用在Linux平台上,而kqueue用在BSD系统中。对于Linux系统,epoll工作模式是首选。在操作系统不支持这些高效模型时才使用select。  worker_connections      65536;  #每一个worker进程能并发处理(发起)的最大连接数(包含与客户端或后端被代理服务器间等所有连接数)。nginx作为反向代理服务器,计算公式 最大连接数 = worker_processes * worker_connections/4,所以这里客户端最大连接数是65536,这个可以增到到8192都没关系,看情况而定,但不能超过后面的worker_rlimit_nofile。当nginx作为http服务器时,计算公式里面是除以2。进程的最大连接数受Linux系统进程的最大打开文件数限制,在执行操作系统命令ulimit -n 65536后worker_connections的设置才能生效。}#http服务器http{  include       mime.types; #include是个主模块指令,实现对配置文件所包含的文件的设定,可以减少主配置文件的复杂度。类似于Apache中的include方法。  default_type  application/octet-stream; #default_type属于HTTP核心模块指令,这里设定默认类型为二进制流,也就是当文件类型未定义时使用这种方式,例如在没有配置PHP环境时,Nginx是不予解析的,此时,用浏览器访问PHP文件就会出现下载窗口。  #charset  gb2312; #charset gb2312; 指定客户端编码格式。#HTTP参数之客户端head缓存    server_names_hash_bucket_size 128; #服务器名字的hash表大小。        client_header_buffer_size 32k;     #用来指定来自客户端请求头的header buffer 大小。对于大多数请求,1K的缓存已经足够了,如果自定义了消息头或有更大的cookie,可以增大缓存区大小。        large_client_header_buffers 4 128k;#用来指定客户端请求中较大的消息头的缓存最大数量和大小,4为个数,128k为大小,最大缓存为4个128KB。        client_max_body_size 10m;                #客户端请求的最大的单个文件字节数。 允许客户端请求的最大单文件字节数。如果有上传较大文件,请设置它的限制值        client_body_buffer_size 128k;       #缓冲区代理缓冲用户端请求的最大字节数。        sendfile on ;                                       #开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,减少用户空间到内核空间的上下文切换。对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。        #sendfile on ;                                      #开启 tcp_nopush on; 和tcp_nodelay on; 防止网络阻塞。        tcp_nopush on;                                        #        tcp_nodelay on;        keepalive_timeout 65 :             #长连接超时时间,单位是秒,这个参数很敏感,涉及浏览器的种类、后端服务器的超时设置、操作系统的设置,可以另外起一片文章了。长连接请求大量小文件的时候,可以减少重建连接的开销,但假如有大文件上传,65s内没上传完成会导致失败。如果设置时间过长,用户又多,长时间保持连接会占用大量资源。        client_body_timeout 60s;           #用于设置客户端请求主体读取超时时间,默认是60s。如果超过这个时间,客户端还没有发送任何数据,nginx将返回Request time out(408)错误。        send_timeout 60s;                             #用于指定响应客户端的超时时间。这个超时仅限于两个连接活动之间的时间,如果超过这个时间,客户端没有任何活动,Nginx将会关闭连接。#HTTP参数之FastCGI参数        fastcgi_connect_timeout 300;       #指定连接到后端FastCGI的超时时间。        fastcgi_send_timeout 300;          #指定向FastCGI传送请求的超时时间,这个值是已经完成两次握手后向FastCGI传送请求的超时时间。        fastcgi_read_timeout 300;                   #指定接收FastCGI应答的超时时间,这个值是已经完成两次握手后接收FastCGI应答的超时时间。        fastcgi_buffer_size 64k;                    #用于指定读取FastCGI应答第一部分需要多大的缓冲区,这个值表示将使用1个64KB的缓冲区读取应答的第一部分(应答头),可以设置为fastcgi_buffers选项指定的缓冲区大小。        fastcgi_buffers 4 64k;                 #指定本地需要用多少和多大的缓冲区来缓冲FastCGI的应答请求。如果一个PHP脚本所产生的页面大小为256KB,那么会为其分配4个64KB的缓冲区来缓存;如果页面大小大于256KB,那么大于256KB的部分会缓存到fastcgi_temp指定的路径中,但是这并不是好方法,因为内存中的数据处理速度要快于硬盘。一般这个值应该为站点中PHP脚本所产生的页面大小的中间值,如果站点大部分脚本所产生的页面大小为256KB,那么可以把这个值设置为"16 16k"、"4 64k"等。        fastcgi_busy_buffers_size 128k;    #默认值是fastcgi_buffers的两倍。        fastcgi_temp_file_write_size 128k; #表示在写入缓存文件时使用多大的数据块,默认值是fastcgi_buffers的两倍。         fastcgi_cache TEST;                         #示开启FastCGI缓存并为其指定一个名称。开启缓存非常有用,可以有效降低CPU的负载,并且防止502错误的发生。但是开启缓存也会引起很多问题,要视具体情况而定。        fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=TEST:10m inactive=5m;   #FastCGI缓存指定一个文件路径、目录结构等级、关键字区域存储时间和非活动删除时间。        fastcgi_cache_valid 200 302 1h;    #用来指定应答代码的缓存时间。实例中的值表示将200和302应答缓存一个小时,将301应答缓存1天,其他应答均缓存1分钟。        fastcgi_cache_valid 301 1d;          fastcgi_cache_valid any 1m;#HTTP参数之gzip模块设置        gzip on;                                                      #开启gzip压缩输出        gzip_min_length 1k;                                        #最小压缩文件大小,页面字节数从header头的Content-Length中获取。默认值为0,不管多大页面都压缩,建议设置成大于1K的字节数,小于1K可能会越压越大。        gzip_buffers    4 16k;                         #压缩缓冲区,表示申请四个16K的内存作为压缩结果流缓存,默认是申请与原始数据大小相同的内存空间来存储gzip压缩结果。        gzip_http_version 1.1;                             #用于设置识别HTTP协议版本,默认是1.1,目前主流浏览器都已成指出。(默认1.1,前端如果是squid2.5请使用1.0)        gzip_comp_level 6;                                 #压缩等级,1压缩比最小,处理速度最快,9压缩比最大,传输速度快,但是消耗CPU资源。        gzip_types text/html text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml; #压缩类型,默认就已经包含text/html,所以下面就不用再写了,写上去也不会有问题,但是会有一个warn。        gzip_vary on;                                            #和http头有关系,会在响应头加个 Vary: Accept-Encoding ,可以让前端的缓存服务器缓存经过gzip压缩的页面,例如,用Squid缓存经过Nginx压缩的数据。        gzip_proxied any;                                  #Nginx作为反向代理的时候启用,决定开启或者关闭后端服务器返回的结果是否压缩,匹配的前提是后端服务器必须要返回包含"Via"的 header头。          #server配置  server  {                listen 80 default;                                               #监听端口,默认80,小于1024的要以root启动。可以为listen *:80、listen 127.0.0.1:80等形式。                server_name localhost;                                # 服务器名,如localhost、www.example.com,可以通过正则匹配。                index index.html index.htm index.php;                    root /data/htdocs/www;                  #定义服务器的默认网站根目录位置。如果locationURL匹配的是子目录或文件,root没什么作用,一般放在server指令里面或/下。                index index.jsp index.html index.htm   #定义路径下默认访问的文件名,一般跟着root放。                #server_name_in_redirect off;                location ~ .*\.(php|php5)?$                {                  #fastcgi_pass  unix:/tmp/php-cgi.sock;                  fastcgi_pass  127.0.0.1:9000;                  fastcgi_index index.php;                  include fcgi.conf;                }                location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$                {                  expires      30d;                }                location ~ .*\.(js|css)?$                {                  expires      1h;                }    }    }

配置HTTP服务器(nginx代理)

worker_processes  1;events {    worker_connections  1024;}http {    include       mime.types;    default_type  application/octet-stream;    sendfile        on;    keepalive_timeout  65;    #gzip  on;    server {        listen       80;        server_name  localhost;                                root D:/root;//重点配置,这里为根目录路由位置        error_page   500 502 503 504  /50x.html;        location = /50x.html {            root   html;        }}

上面代码监听80端口
http服务目录为 D:/root http服务目录为。

如果配置 index index.html; 输入localhost 默认访问 localhost/index.html index 只支持网页不支持图片及视频。

启动nginx

由于没有配置环境变量,到nginx根目录运行dos命里。

启动:nginx 或者双击nginx.exe

关闭: nginx -s stop 或者(任务管理器kill掉nginx进程)

启动后在浏览器输入:localhost,能够加载出欢迎界面说明正常启动成功了

关于nginx中通过配置http服务器实现动静分离)就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

文件 服务 缓存 配置 服务器 时间 大小 客户 指令 最大 客户端 进程 缓冲 模块 系统 缓冲区 部分 页面 代理 模式 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 加强网络安全管理的稿件 云数据库与其它数据库的关系 腾讯云轻量服务器东京美国 爱普生MP288用打印服务器 陕西智能养老软件开发专业制作 网络安全生产服务 海光cpu服务器白皮书 怎么退出向日葵远程的服务器 网络运维与网络安全类吗 软件开发专业中专学校排名 qq 文件服务器 安全吗 潜山租房网络安全 数据库原理教程pdf 江苏戴尔服务器虚拟化费用 宿城区网络技术诚信合作 软件开发技术能干什么 南京移动软件开发 贵州大数据服务器云空间 网络安全或服务器组建方面 国家鼓励开发网络和保护网络技术 数据库建表自动获取时间 海口淘岛网络技术 数据库的本机启动服务在哪 幼儿小班网络安全教育ppt图片 软件开发一般上几年学费多少 FDA数据库怎么下载 个人版sp3数据库 上海led视频服务器厂家 计算机网络技术什么人适合学 国家网络安全公司招聘
0