Nginx基础03:配置文件nginx.conf(Part2)

2023-11-19

上一篇文章概述与罗列了"全局配置块、events配置块、http全局块"的基本配置与属性,本篇文章将继续深入server块的配置项,以及相关应用。

上篇文章地址:Nginx基础02:配置文件nginx.conf(Part1)

如何使用本篇文章

  • 本文作为一篇高度总结和罗列nginx.conf中所有的基础配置项,循规蹈矩地按照文章的顺序阅读的方式不可取

  • 笔者建议所有读者,先看目录,掌握Nginx都有哪些基础的配置块,再想要了解那一个配置块时,再详细去看

  • 作为一篇字典类的文章,建议读者善用浏览器的全文查找功能,按Ctrl + F调出查找功能,搜索你感兴趣的关键字,针对性地学习

正式开始前,还是再次强调server块在配置文件中的位置:

http-server块

server块和“虚拟主机”的概念有密切联系

  • 虚拟主机技术主要应用于HTTP、FTP及EMAIL等多项服务,将一台服务器的某项或者全部服务内容逻辑划分为多个服务单位,对外表现为多个服务器,从而充分利用服务器硬件资源。从用户角度来看,一台虚拟主机和一台独立的硬件主机是完全一样的。

  • 在使用Nginx服务器提供Web服务时,利用虚拟主机的技术就可以避免为每一个要运行的网站提供单独的Nginx服务器,也无需为每个网站对应运行一组Nginx进程。虚拟主机技术使得Nginx服务器可以在同一台服务器上只运行一组Nginx进程,就可以运行多个网站。

  • 一个http块都可以包含多个server块,而每个server块就相当于一台虚拟主机,它内部可有多台主机联合提供服务,一起对外提供在逻辑上关系密切的一组服务(或网站)。

公有配置

error_page指令

  • 配置Nginx出现错误时,返回自定义页面以及错误代码,或将浏览器重定向到其他URI。

  • 出现404错误时,响应根目录下的404.html文件:error_page 404 /404.html;

防盗链

valid_referers none | blocked | server_names | string...

  • 功能:控制是否需要检验referer,设定校验referer时的校验值

  • 应用场景:防盗链

  • 参数

  • none:如果Header中的Referer为空,允许访问

  • blocked:在Header中的Referer不为空,但是该值被防火墙或代理进行伪装过,如不带"http://" 、"https://"等协议头的资源允许访问。

  • server_names:指定具体的域名或者IP。也就是说Request中的Referer必须为这里指定的参数,才让访问

  • string:可以支持正则表达式和*的字符串。如果是正则表达式,需要以`~`开头表示

  • 位置:server、location

  • 防盗链实现原理:将Request中的Referer与valid_referers设定的值进行比对,如果匹配到了就将$invalid_referer变量置0,如果没有匹配到,则将$invalid_referer变量置为1,通过if语句判定不符合条件的响应403

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name res.hackyle.com;
    
    ssl_certificate "/etc/nginx/cert/res.hackyle.com.pem";
    ssl_certificate_key "/etc/nginx/cert/res.hackyle.com.key";
    ssl_session_cache shared:SSL:1m;
    ssl_session_timeout  10m;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;
    
    #防盗链:验证所有请求中的Referer是否来自*.hackyle.com,否则响应403
    valid_referers blocked *.hackyle.com;
       if ($invalid_referer){
        return 403;
    }
    
    #客户端:增删改查的接口
    #对外提供静态资源的地址:https://res.hackyle.com/桶名/年份/月份/uuid.文件拓展名
    location / {
        proxy_pass http://localhost:9000/;
    }
}

地址重写

rewrite regex replacement [flag];

  • 地址重写(Rewrite):等价于请求重定向;地址转发(Forward):等价于请求转发

  • 功能:将请求中的regex替换为replacement

  • 参数

  • regex:匹配URI中将要被替换的内容

  • replacement:替换成谁。如果该字符串是以"http://"或者"https://"开头的,则不会继续向下对URI进行其他处理,而是直接返回重写后的URI给客户端。

  • flag:用来设置rewrite对URI的处理行为

  • last:

  • break

  • redirect

  • permanent

  • 位置:server、location、if

rewrite_log on | off(默认值);

  • 功能:开启后,URL重写的相关日志将以notice级别输出到error_log指令配置的日志文件汇总。

  • 位置:http、server、location、if

流程控制

set $variable value;

  • variable:变量的名称,用"$"作为变量的第一个字符,且不能与Nginx服务器预设的全局变量同名。

  • value:变量的值,可以是字符串、其他变量或者变量的组合等。

  • 位置:server、location、if

if (condition){...}

  • 语法要求:if与左括号之间存在一个空格

  • 位置:server、location

  • condition的写法

  1. 变量名:对应的值为空或者是0,if都判断为false,其他条件为true。

  1. "="和"!=":满足条件为true,不满足为false。例如:if ($request_method = POST){ return405; }

  1. 正则表达式:匹配成功返回true,否则返回false。变量与正则表达式之间使用"~","~*","!~","!~\*"来连接。

  1. "~"代表匹配正则表达式过程中区分大小写,

  1. "~\*"代表匹配正则表达式过程中不区分大小写

  1. "!~"和"!~\*"刚好和上面取相反值,如果匹配上返回false,匹配不上返回true

  1. 例子:

if ($http_user_agent ~MSIE){

#$http_user_agent的值中是否包含MSIE字符串,如果包含返回true

}

  1. 注意:正则表达式字符串一般不需要加引号,但是如果字符串中包含"}"或者是";"等字符时,就需要把引号加上。

  1. 文件是否存在:

if (-f $request_filename){

#判断请求的文件是否存在。文件存在时返回true

}

if (!-f $request_filename){

#判断请求的文件是否不存在。文件不存在且文件目录存在时返回true,其他情况返回false

}

  1. 判断请求的目录是否存在使用"-d"和"!-d"

  1. 当使用"-d"时,如果请求的目录存在,if返回true,如果目录不存在则返回false

  1. 当使用"!-d"时,如果请求的目录不存在但该目录的上级目录存在则返回true,该目录和它上级目录都不存在则返回false,如果请求目录存在也返回false.

  1. 判断请求的目录或者文件是否存在使用"-e"和"!-e"

  1. 当使用"-e",如果请求的目录或者文件存在时,if返回true,否则返回false.

  1. 当使用"!-e",如果请求的文件和文件所在路径上的目录都不存在返回true,否则返回false

  1. 判断请求的文件是否可执行使用"-x"和"!-x"

  1. 当使用"-x",如果请求的文件可执行,if返回true,否则返回false

  1. 当使用"!-x",如果请求文件不可执行,返回true,否则返回false

break;

中断当前作用域break后面的指令,即位于它前面的指令配置生效,位于后面的指令配置无效

位置:server、location、if

return code [text] | code URL |URL;

  • 功能:立即响应给客户端,其后面的配置都将失效

  • 参数

  • code:状态代码

  • text:响应体内容,支持变量的使用

  • URL:响应URL地址,客户端收到后会重定向

  • 位置:server、location、if

listen: 监听端口

Listen指令:指定本个server所使用的端口(监听端口)

  • listenaddress[:port]

[default_server]

[ssl]

[http2| spdy]

[proxy_protocol]

[setfib=number]

[fastopen=number]

[backlog=number]

[rcvbuf=size]

[sndbuf=size]

[accept_filter=filter]

[deferred]

[bind]

[ipv6only=on|off]

[reuseport]

[so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];

  • listenport

[default_server]

[ssl]

[http2| spdy]

[proxy_protocol]

[setfib=number]

[fastopen=number]

[backlog=number]

[rcvbuf=size]

[sndbuf=size]

[accept_filter=filter]

[deferred]

[bind]

[ipv6only=on|off]

[reuseport]

[so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];

  • listenunix:path

[default_server]

[ssl]

[http2|spdy]

[proxy_protocol]

[backlog=number]

[rcvbuf=size]

[sndbuf=size]

[accept_filter=filter]

[deferred]

[bind]

[so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];

参数

address:监听请求来的IP地址

  • 如果是IPv6的地址,需要使用中括号“[]”括起来,比如[fe80::1]等。

  • 也即本个server只针对指定请求IP的访问。

port:端口号

  • 如果只定义了IP地址没有定义端口号,就使用80端口。

  • 要是没配置listen指令,且Nginx以超级用户权限运行,则使用:80,否则使用:8000。

  • 多个虚拟主机可以同时监听同一个端口,但是server_name需要设置成不一样;

default_server:默认server

  • 如果没有找到address:port,则使用本个配置指定的地址。

backlog=number

  • 设置监听函数listen()最多允许多少网络连接同时处于挂起状态

  • 在FreeBSD中默认为-1,其他平台默认为511。

accept_filter=filter:设置监听端口对请求的过滤,被过滤的内容不能被接收和处理。

  • 本指令只在FreeBSD和NetBSD 5.0+平台下有效。

  • filter可以设置为dataready或httpready,具体参阅Nginx的官方文档。

bind:标识符

  • 使用独立的bind()处理此address:port;

  • 一般情况下,对于端口相同而IP地址不同的多个连接,Nginx服务器将只使用一个监听命令,并使用bind()处理端口相同的所有连接。

实例

  • listen 127.0.0.1:8000; #只监听来自0.0.1这个IP,请求8000端口的请求

  • listen localhost:8000; #和上面效果一样

  • listen 127.0.0.1; #只监听来自0.0.1这个IP,请求80端口的请求(不指定端口,默认80)

  • listen 8000; #监听来自所有IP请求8000端口的请求

  • listen *:8000; #和上面效果一样

server_name: 指定域名

功能:用于配置虚拟主机的名称

语法:server_name name…;

实例:server_name myserver.com www.myserver.com

name:域名,多个用空格分割

  • name可以使用通配符“*”,注意的是通配符不能出现在域名的中间,只能出现在首段或尾段

  • *:所有顶级域名下,名为“baidu”的域

  • 错误的配置:*.cn www.itheima.c*

  • name可以使用正则:例如:server_name ~^www\.(\w+)\.com$;

name匹配优先级:

  1. 准确匹配server_name

  1. 通配符在开始时匹配server_name成功

  1. 通配符在结尾时匹配server_name成功

  1. 正则表达式匹配server_name成功

location: URL映射

功能:映射URL请求(支持正则)到具体的页面、处理器上

语法:location [ = | ~ | ~* | ^~] uri {

root请求访问的根目录(使用绝对路径);

index设置网站的首页;

}

URI映射

  • “=”:进行普通字符精确匹配,也就是完全匹配。如果已经匹配成功,就停止继续向下搜索并立即处理此请求。

  • “^~”:前缀匹配。如果匹配成功,则不再匹配其他location。

  • “~”:表示执行一个正则匹配,区分大小写。

  • “~*”:表示执行一个正则匹配,不区分大小写。

匹配的优先级:

  1. 等号类型(=)的优先级最高。一旦匹配成功,则不再查找其他匹配项,停止搜索。

  1. ^~类型表达式,不属于正则表达式。一旦匹配成功,则不再查找其他匹配项,停止搜索。

  1. 正则表达式类型(~ ~*)的优先级次之。如果有多个location的正则能匹配的话,则使用正则表达式最长的那个。

  1. 常规字符串匹配类型。按前缀匹配。

  1. /通用匹配,如果没有匹配到,就匹配通用的

前置参数(“=”)示例

server {
    listen 80;
    server_name 127.0.0.1;
    location =/abc {
        ...
    }
}
可以匹配到
http://192.168.200.133/abc
http://192.168.200.133/abc?p1=TOM
匹配不到
http://192.168.200.133/abc/
http://192.168.200.133/abcdef

前置参数(“~”)示例

server {
    listen 80;
    server_name 127.0.0.1;
    location ~^/abc\w${ #红色部分是正则,^表示一行的开始,$表示一行的结束,/表示请求中的斜杠
        default_type text/plain;
        return 200 "access success";
    }
}
server {
    listen 80;
    server_name 127.0.0.1;
    location ~*^/abc\w${
        default_type text/plain;
        return 200 "access success";
    }
}

前置参数(“^~”)示例

server {
    listen 80;
    server_name 127.0.0.1;
    location ^~/abc{
        default_type text/plain;
        return 200 "access success";
    }
}

路径替换

请求别名:alias file-path |directory-path;

例子:

location /img/ {

alias /usr/local/image/; #将”/img/”替换为”/usr/local/image/”

#例如:请求/img/aa.jpg,在本机中将会被替换为/usr/local/image/aa.jpg

}

指定根目录:root path;

例子:

location /img/ {

root /usr/data/; #请求/img/aa.jpg,将会拼接为/usr/data/img/aa.jpg

}

反向代理

Reverse Proxy:用Nginx来接收internet上的连接请求,然后将请求转发给内部网络上的服务器去具体处理

proxy_pass URL;

  • 设置被代理服务器地址,可以是主机名称、IP地址加端口号形式。

  • URL为要设置的被代理服务器地址,包含传输协议(`http`,`https://`)、主机名称或IP地址加端口号、URI等要素。

  • 位置:location

proxy_set_header field value;

  • 更改Nginx服务器接收到的客户端请求的请求头信息,然后将新的请求头发送给代理的服务器

  • 默认值proxy_set_header Host $proxy_host; proxy_set_header Connection close;

  • 位置:http、server、location

  • 例子:

proxy_redirect redirect replacement; | proxy_redirect default; |proxy_redirect off;

  • 重置头信息中的"Location"和"Refresh"的值

  • 参数

  • redirect:目标,Location的值;replacement:要替换的值

  • default:将location块的uri变量作为replacement,将proxy_pass变量作为redirect进行替换

  • off:关闭proxy_redirect

  • 默认:proxy_redirect default;

  • 位置:http、server、location

proxy_buffering on(默认值)|off;

  • 开启或者关闭代理服务器的缓冲区

  • 位置:http、server、location

proxy_buffers number size;

  • 指定单个连接从代理服务器读取响应的缓存区的个数和大小

  • 默认值:proxy_buffers 8 4k | 8K;(与系统平台有关)

  • number:缓冲区的个数

  • size:每个缓冲区的大小,缓冲区的总大小就是number*size

  • 位置:http、server、location

proxy_buffer_size size;

  • 设置从被代理服务器获取的第一部分响应数据的大小。保持与proxy_buffers中的size一致即可,当然也可以更小。

  • 默认值:proxy_buffer_size 4k | 8k;(与系统平台有关)

  • 位置:http、server、location

proxy_busy_buffers_size size;

  • 限制同时处于BUSY状态的缓冲总大小。

  • 默认值proxy_busy_buffers_size 8k | 16K;

  • 位置http、server、location

proxy_temp_path path;

  • 当缓冲区存满后,仍未被Nginx服务器完全接受,响应数据就会被临时存放在磁盘文件上,该指令设置文件路径

  • 位置http、server、location

proxy_temp_file_write_size size;

  • 用来设置磁盘上缓冲文件的大小

  • 默认值:proxy_temp_file_write_size 8K\|16K;

  • 位置http、server、location

SSL

HTTPS是一种通过计算机网络进行安全通信的传输协议。它经由HTTP进行通信,利用SSL/TLS建立全通信,加密数据包,确保数据的安全性。

SSL(Secure Sockets Layer)安全套接层

TLS(Transport Layer Security)传输层安全

ssl_certificate file;

  • 为当前这个虚拟主机指定一个带有PEM格式证书的证书。

  • 位置:http、server

ssl_ceritificate_key file;

  • 指定PEM secret key文件的路径

  • 位置:http、server

ssl_sesion_cache off | none | [builtin[:size]] [shared:name:size]

  • 配置用于SSL会话的缓存

  • 默认值:ssl_session_cache none;

  • 参数

  • off:禁用会话缓存,客户端不得重复使用会话

  • none:禁止使用会话缓存,客户端可以重复使用,但是并没有在缓存中存储会话参数

  • builtin:内置OpenSSL缓存,仅在一个工作进程中使用。

  • shared:所有工作进程之间共享缓存,缓存的相关信息用name和size来指定

  • 位置:http、server

ssl_session_timeout time;

  • 开启SSL会话功能后,设置客户端能够反复使用储存在缓存中的会话参数时间。

  • 默认值:ssl_session_timeout 5m;

  • 位置:http、server

ssl_ciphers ciphers;

  • 指出允许的密码,密码指定为OpenSSL支持的格式

  • 默认值:ssl_ciphers HIGH:!aNULL:!MD5;

  • 位置:http、server

ssl_perfer_server_ciphers on |off(默认值);

  • 指定是否服务器密码优先客户端密码

  • 位置:http、server

访问控制

允许访问:allow [ address | CIDR | all ]

  • 使用字段:http, server, location, limit_except

禁止访问:deny all/IP网段;

  • 使用字段:http, server, location, limit_except

例子:

location / {
    deny 10.1.100.100;  #不允许该IP访问
    allow 10.1.200.0/24;  #允许该网段访问
    allow 192.168.1.0/16;  #允许该网段访问
    deny all;  #除了allow允许的网段,其他请求IP都禁止访问
}

内置变量

nginx的配置文件中可以使用的内置变量以美元符$开始,也有人叫全局变量。其中,部分预定义的变量的值是可以改变的。

$args:

  • 这个变量等于请求行中的参数,同$query_string。

  • 例如:/aa/bb?name=kyle&age=22中的“name=kyle&age=22”

$content_length :请求头中的Content-length字段。

$content_type :请求头中的Content-Type字段。

$document_root :当前请求在root指令中指定的值。

$host :请求主机头字段,否则为服务器名称。

$http_user_agent :客户端agent信息

$http_cookie :客户端cookie信息

$limit_rate :这个变量可以限制连接速率。

$request_method :客户端请求的动作,通常为GET或POST。

$remote_addr :客户端的IP地址。

$remote_port :客户端的端口。

$remote_user :已经经过Auth Basic Module验证的用户名。

$request_filename :当前请求的文件路径,由root或alias指令与URI请求生成。

$scheme :HTTP方法(如http,https)。

$server_protocol :请求使用的协议,通常是HTTP/1.0或HTTP/1.1。

$server_addr :服务器地址,在完成一次系统调用后可以确定这个值。

$server_name :服务器名称。

$server_port :请求到达服务器的端口号。

$request_uri :包含请求参数的原始URI,不包含主机名,如:”/foo/bar.php?arg=baz”。

$uri :不带请求参数的当前URI,$uri不包含主机名,如”/foo/bar.html”。

$document_uri :与$uri相同

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Nginx基础03:配置文件nginx.conf(Part2) 的相关文章

  • nginx auth_basic 时间限制

    我正在使用 nginx 和auth basic模块 但我似乎找不到一种方法来指定 身份验证 过期的时间间隔 我希望能够强制 nginx 每 6 小时询问一次密码 有没有办法做到这一点 如果不是 可接受的解决方法是什么 这可能是不可能的 似乎
  • Electron 构建应用程序无法启动 Express 服务器

    我正在构建一个应用程序 当我处于开发人员模式时一切正常 每件事都按其应有的方式运作 但是 当我使用电子构建器打包我的应用程序时 应用程序会打开 但它不会启动快速服务器 并且应用程序无法正常工作 这是我的 package json 代码 na
  • Meteor - 自动发起客户端登录

    我有一个 Meteor 应用程序 我使用 nginx 和内部 SSO 服务进行身份验证 我能够成功地完成此操作 并在服务器 Meteor onConnection 方法上的 nginx 设置 http 标头中检索用户详细信息 此时 我不确定
  • 如何在 OpenShift 上安装 Nginx

    虽然我跟着https blog openshift com lightweight http serving using nginx on openshift https blog openshift com lightweight htt
  • Tomcat 和 TomEE、TomEE 和 TomEE Plus 之间有什么区别

    我想在服务器中部署 EJB Ear 但我对选择服务器感到非常困惑tomcat TomEE and TomEE Plus 两者有什么区别Tomcat and TomEE 其中有哪些新功能TomEE and TomEE Plus 在什么情况下才
  • Nginx 位置“不等于”正则表达式

    我该如何设置locationNginx 中的条件是否响应任何不等于列出的位置 I tried location dir1 file2 php rewrite http example com 1 permanent 但它不会触发重定向 它只
  • Websocket-rails 不适用于 Nginx 和 Unicorn 的生产环境

    我有 Rails 3 2 应用程序和 gem websocket rails 0 7 在开发机器上 一切正常 在生产环境中 我使用 Nginx 1 6 作为代理服务器 使用 Unicorn 作为 http 服务器 Thin 用于独立模式 如
  • X-FRAME-OPTIONS: DENY 通过 nginx 来自 Django 站点在哪里?

    我的 Django 网站使用django summernote https github com summernote django summernote在 iframe 中 并抛出此错误 多个具有冲突值的 X Frame Options
  • 如何在 nginx.conf 中引用操作系统环境变量

    在 nginx conf 中 设置变量后set name value 我可以像这样参考它 name 但是当我导出操作系统环境变量时 经过env name from env like https nginx org en docs ngx c
  • 使用 Clapprjs 在网页上流式传输 .m3u8

    我使用 nginx rtmp 将 rtmp 转换为 hls 并使用 Clappr 在网页中进行流式传输 但 Clappr 采用旧的 ts 段 导致 404 错误 因为它在服务器上被删除 如何解决这个问题 抱歉 这是我第一次使用 nginx
  • Docker-compose Predis 不通过 PHP 连接

    我正在尝试使用 docker compose 将 PHP 与 redis 连接 docker compose yml version 2 services redis image redis 3 2 2 php image company
  • nginx工作进程如何共享“监听套接字”

    This http aosabook org en nginx html http aosabook org en nginx html说 工作进程接受来自共享 监听 套接字的新请求 并在每个进程内执行高效的运行循环 我查看了代码 但不明白
  • Amazon ECS - 在 Docker 入口点上使用 IAM 角色时权限被拒绝

    我正在寻找一种将机密 证书注入 Amazon ECS 容器的方法 就我而言 它是一个简单的 nginx 容器 我一直在使用 AWS Parameter Store 关注这篇文章 https aws amazon com blogs comp
  • 使用 client_body_in_file_only 进行 nginx 文件上传

    晚上好 我需要将静态内容上传到 nginx 服务器 1 9 因此上传模块不适用于此版本 我读过这篇文章 Nginx 直接文件上传 无需通过后端传递 https coderwall com p swgfvw nginx direct file
  • 通过 nginx 入口控制器进行基本身份验证

    我正在使用 nginx 入口控制器 https kubernetes github io ingress nginx deploy https kubernetes github io ingress nginx deploy 在 AWS
  • 错误:在 Google 应用引擎上部署节点 js 时找不到模块“/workspace/server.js”

    经过一周的搜索 我无法找到适用于我的 Node js 应用程序的应用程序引擎部署问题的解决方案 我已经用这个替换了原来的代码Express 的 hello world 示例 https expressjs com en starter he
  • 为什么 nginx 接受 Host 标头与 server_name 不匹配的请求?

    我有一个这样设置的站点 nginx 作为代理服务器 通过 UNIX 套接字代理为 Django 站点提供服务的 Gunicorn 实例的请求 这是我的 nginx 配置 server listen 80 server name api my
  • nginx - 记录 SSL 握手失败

    我正在运行启用了 SSL 的 nginx 服务器 我的协议 密码设置相当安全 我已经在 ssllabs com 上检查过它们 但是 因为这是一个由我无法控制的 http 客户端调用的 Web 服务 所以我担心兼容性 重点是 有没有办法在我的
  • NGinx 域名重定向

    假设我有一个名为 xyz co 的网站 我还有其他具有相同前缀的域名 例如 xyz com xyz it xyz co it 现在 nginx 与端口 80 的 nginx conf 中的 server name xyz co 配合得很好
  • Nginx - 自定义 404 页面

    Nginx PHP 在 fastCGI 上 对我来说非常有用 当我输入不存在的 PHP 文件的路径时 我不会得到默认的 404 错误页面 任何无效的 html 文件都会出现该错误页面 而只会得到 未指定输入文件 如何自定义此 404 错误页

随机推荐

  • Win10 64bit系统中VS2015与OpenCV3.2配置开发环境

    1 将OpenCV解压到D盘根目录 个人认为纯英文目录比较保险 2 VS2015建立控制台工程 设置为64位debug开发环境 3 配置工程属性 在可执行目录 executable directories 中 确认已包含opencv包里的b
  • VRTK4.0 学习Day3

    假装是第三天吧 我这里的情况是 勾选了这个支持之后 会将下方这个XR Plug in Managerment就下好了 我还打开了那个保龄球的那个项目 那里面的这个XR Plug in Managerment是没有的 也不要去导入 我导入之后
  • windows下搭建编译chromium的开发环境

    本篇为windows下搭建编译chromium的方法 mac篇 mac下搭建编译chromium的开发环境 二七 CSDN博客 linux篇 linux 搭建和编译 chromium 环境 二七 CSDN博客 注意 搭建部署chromium
  • js 将一维数组转成二维数组

    开发时遇上一个将一维数组转换成二维数据结构的要求 记录一下工具函数 说明 这是一个函数 直接复制到
  • 接口测试这么玩才明白

    接口测试作为当下提升测试效能的利器 逐步被大家所认同 但同时很多团队在落地接口自动化时 又会感觉效果不是很明显 投入了大量的时间 写了很多脚本 但是效果并不是很明显 其中有各种问题 结合某团队的现状 分享一些实践经验 仅供参考 引入接口测试
  • Java解析XML的四种方法详解

    XML现在已经成为一种通用的数据交换格式 它的平台无关性 语言无关性 系统无关性 给数据集成与交互带来了极大的方便 对于XML本身的语法知识与技术细节 需要阅读相关的技术文献 这里面包括的内容有DOM Document Object Mod
  • c语言下列编程段的错误,C语言编程题目(有错误)

    问题描述 C语言编程题目 有错误 输入精度e 用下列公式求cosx的近似值 精确到最后一项的绝对值小雨e 要求调用和定义函数funcos e x 求余弦函数的近似值 cosx x的0次方 0 x的2次方 2 x的4次方 4 x的6次方 6
  • 58同城 -- 前端一面

    面我的是一个小哥哥 面试体验挺好的 大概进行了35分钟左右 自我介绍 面试内容 为什么向做前端 怎么学习的前端 本人非科班哈 然后问我项目 直接问项目 没问笔试令我有点意外 问我印象最深的项目 印象最深的功能 遇到的难点 前端存储的区别 C
  • python格式化字符串 时间戳 转 UTC(2023-01-11T16:00:00Z)格式时间

    前言 公司前端的时间参数分为两类 一种是时间戳传参 另一种是 2023 01 11T16 00 00Z UTC 时间传参 有些脚本需要用到datatime datatime因此要整理一下相关方法 获取时间戳 my timestamp tim
  • mysql引擎机制_Mysql存储引擎以及锁机制

    一 常用命令 1 查看引擎 默认为InnoDB 查看mysql提供的存储引擎 show engienes 查看mysql当前默认的存储引擎 show variables like storage engine 查看某张表用了什么引擎 sho
  • 解决css中上下外边距(margin)在父元素中溢出的问题

    两个办法 给父元素添加overflow hidden 即可 给父元素添加透明边框border 1px solid transparent 给父元素添加伪元素 before after content display table 改变光标的颜
  • Unity Application.OpenURL Unity打开网页链接

    一般情况下 在电脑上使用Application OpenURL可以正常打开网页 但是如果网页以www开头 例如www baidu com 在电脑上可以正常打开 但是发布成apk后就没有反应了 此时应将Application OpenURL
  • 怎样管理计算机启动项,启动项管理,详细教您电脑开机启动项怎么设置

    电脑开机启动项 就是电脑开机的时候系统会在前台或者后台运行的程序 一般我们主要说的是windows系统的开机启动项 在Windows的配置文件也会加载一些自动运行的程序 那电脑开机启动项怎么设置 下面 小编给大家介绍设置电脑开机启动项的步骤
  • 【华为OD统一考试A卷

    华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一修改为OD统一考试 A卷 和OD统一考试 B卷 你收到的链接上面会标注A卷还是B卷 请注意 根据反馈 目前大部分收到的都是
  • ESP32C3 移植ST7735 LVGL

    关于lvgl LVGL是一个C语言编写的免费的开源图形库 其提供了用于嵌入式GUI的各种元素 用户可以利用丰富的图形库资源 在消耗极低内存的情况下构建视觉效果丰富多彩的GUI 只需 64kB 闪存和 8kB RAM 就足以满足简单的用户界面
  • vue构建路由,报错Cannot read properties of undefined (reading ‘forEach‘)

    构建vue路由 这个foreach报错 意味着有一个进入循环的值为null 如果看了其他文章的标准还没有解决的话 建议加一个routes constantRoutes 即在定义router时手动加上一个routes属性 完整的代码 App
  • Linux 如何设置开机自启动脚本

    Linxu开机自启动脚本 一 CentOS系统和Redhat系统如下 1 修改 etc rc d rc local为 bin bash THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES It is
  • Android开发-在Android应用里接入AdMob广告进行变现的实现

    前 言 前段时间 自己开发了一款个人的Android应用想上线 但是由于国内的应用商城对个人开发者不是很友好 即使应用已经申请了软件著作权了也不能上线的了 有些应用只能以企业的名义来上线不能以个人的名义来上线 如影视类 新闻资讯类的应用 无
  • 遇见VS,scanf中_s不能少,要不然Bug报到家,如何解决这个问题呢?

    相信大家第一次用VS时 都会遇到这样的问题 VS莫名其妙的跟你说要用scanf s 使用scanf这个函数不安全 这里说一下为什么我们要用scanf而不使用它推荐的scanf s 我们写代码总不能是写给自己看吧 我们要写的代码可能是要发给别
  • Nginx基础03:配置文件nginx.conf(Part2)

    上一篇文章概述与罗列了 全局配置块 events配置块 http全局块 的基本配置与属性 本篇文章将继续深入server块的配置项 以及相关应用 上篇文章地址 Nginx基础02 配置文件nginx conf Part1 如何使用本篇文章