Nginx
之前(即运行make
脚本之前),首先是进行安装的配置准备,包括环境检查及生成文件。这些工作是由自动脚本完成的。和绝大多数软件一样,Nginx
的自动脚本的入口,同样是名为configure
的文件。configure
,其他的自动脚本都在auto
目录下。通过分析configure
脚本源码,我们可以看到,configure
首先运行了auto
目录下的几个自动脚本,如下:<code>. auto/options . auto/init . auto/sources </code>
auto/options
脚本,来设定配置选项。下面将逐步分析auto/options
脚本是如何工作的。configure
配置参数<code>opt= for option do ... done </code>
./configure
的时候携带的参数选项,for
循环每次对应一个参数选项
option。要注意for
循环体上面有一个全局的opt
变量。这个循环体内的第一个语句是最重要是,它是:<code>opt="$opt `echo $option | sed -e \"s/\(--[^=]*=\)\(.* .*\)/\1'\2'/\"`" </code>
opt
的值就是一个由空格来分隔的参数列表。然后在循环体中接下来是一个case-esac
,用来得到参数值,如下:<code>case "$option" in -*=*) value=`echo "$option" | sed -e 's/[-_a-zA-Z0-9]*=//'` ;; *) value="" ;; esac </code>
value
赋值为参数选项值,如果选项值不与-*=*
的模式匹配,则value
值为""
。接下来的case-esac
语句用来匹配参数的类型。<code> case "$option" in --help) help=yes ;; --prefix=) NGX_PREFIX="!" ;; --prefix=*) NGX_PREFIX="$value" ;; --sbin-path=*) NGX_SBIN_PATH="$value" ;; --conf-path=*) NGX_C ;; ... esac </code>
auto/options
脚本的最开始处赋以默认值,其中那些模块配置变量被赋以YES
的表示默认开启,赋以NO
的表示默认关闭。但它们开启与否由这个auto/options
中的case-esac
语句来决定。还有一些是安装相关的选项变量也在这里被赋值,比如:prefix
参数值被赋予NGX_PREFIX
sbin-path
参数值被赋予NGX_SBIN_PATH
conf-path
参数值被赋予NGX_CONF_PATH
error-log-path
参数值被赋予NGX_ERROR_LOG_PATH
pid-path
参数值被赋予NGX_PID_PATH
lock-path
参数值被赋予NGX_LOCK_PATH
option
并不符合预设的这些匹配,也就是用户使用configure
脚本的时候携带的参数错误,则auto/options
会匹配该语句:<code>*) echo "$0: error: invalid option \"$option\"" exit 1 </code>
for-do-done
就结束。NGX_CONFIGURE
变量option
后,opt
就如我们上面提到的,成为由空格分割的配置项值,并被赋给NGX_CONFIGURE
变量:<code>NGX_C </code>
configure
的帮助信息<code>if [ $help = yes ]; then cat </code>
$help
变量值在初始化时就为no
。如果configure
选项中指定了help
参数,则$help
参数为yes
,则会运行cat
命令,显示大段的帮助信息,然后退出。HTTP
的一些基本功能是被开启的,如果用户指定了--without-http
参数,则变量HTTP
会被赋值为NO
,则下面这段代码if-fi
中的语句会被执行:<code>if [ $HTTP = NO ]; then HTTP_CHARSET=NO HTTP_GZIP=NO HTTP_SSI=NO HTTP_USERID=NO HTTP_ACCESS=NO HTTP_STATUS=NO HTTP_REWRITE=NO HTTP_PROXY=NO HTTP_FASTCGI=NO fi </code>
--crossbuild
参数,则变量NGX_PLATFORM
会被赋予当前for-do-done
循环中的"$value"
值,也就是--crossbuild
的参数值,一般在考虑在Windows
平台使用时才会用到,看下面的语句:<code>if [ ".$NGX_PLATFORM" = ".win32" ]; then NGX_WINE=$WINE fi </code>
--crossbuild=win32
,则NGX_WINE
就会被赋值了。configure
的参数时,如果没有指定了--conf-path
参数,则$NGX_CONF_PATH
变量是没有值的,则下面的语句会为NGX_CONF_PATH
赋以conf/nginx.conf
的缺省值。不过我在想老毛子
Igor Sysoev 同学完全可以在auto/options
开始处和其他参数一样先指定NGX_CONF_PATH
的默认值。<code>NGX_C/nginx.conf} </code>
<code>NGX_C $NGX_CONF_PATH` </code>
--conf-path=/home/michael/nginx/conf/nginx.conf
,则NGX_CONF_PREFIX
的值就是/home/michael/nginx/conf
。NGX_PID_PATH
和NGX_LOCK_PATH
,分别对应configure
参数--pid-path
和--lock-path
,其缺省值分别为logs/nginx.pid
和logs/nginx.lock
。<code>NGX_PID_PATH=${NGX_PID_PATH:-logs/nginx.pid} NGX_LOCK_PATH=${NGX_LOCK_PATH:-logs/nginx.lock} </code>
--error-log-path
则NGX_ERROR_LOG_PATH
变量的值会被指定,根据下面的语句,如果指定的是stderr
则将NGX_ERROR_LOG_PATH
修改为空,即不需要错误日志文件。如果不是标准输出,且其值为空,则设置为缺省值logs/error.log
。<code>if [ ".$NGX_ERROR_LOG_PATH" = ".stderr" ]; then NGX_ERROR_LOG_PATH= else NGX_ERROR_LOG_PATH=${NGX_ERROR_LOG_PATH:-logs/error.log} fi </code>
<code>NGX_HTTP_LOG_PATH=${NGX_HTTP_LOG_PATH:-logs/access.log} NGX_HTTP_CLIENT_TEMP_PATH=${NGX_HTTP_CLIENT_TEMP_PATH:-client_body_temp} NGX_HTTP_PROXY_TEMP_PATH=${NGX_HTTP_PROXY_TEMP_PATH:-proxy_temp} NGX_HTTP_FASTCGI_TEMP_PATH=${NGX_HTTP_FASTCGI_TEMP_PATH:-fastcgi_temp} NGX_HTTP_UWSGI_TEMP_PATH=${NGX_HTTP_UWSGI_TEMP_PATH:-uwsgi_temp} NGX_HTTP_SCGI_TEMP_PATH=${NGX_HTTP_SCGI_TEMP_PATH:-scgi_temp} </code>
--with-perl_modules_path
参数,则NGX_PERL_MODULES
变量即被设定。如果指定的值为一个绝对路径或未指定(空),则当做相对路径来处理,设定为$NGX_PREFIX/$NGX_PERL_MODULES
。<code>case ".$NGX_PERL_MODULES" in ./*) ;; .) ;; *) NGX_PERL_MODULES=$NGX_PREFIX/$NGX_PERL_MODULES ;; esac </code>
auto/options
脚本,所有的配置项已经被正确解析并加载到相应的配置变量中了。위에서는 내용의 측면을 포함하여 구성 옵션 스크립트 자동/옵션을 구문 분석하는 Nginx 자동 스크립트(1)의 구조를 소개했습니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

Springboot内置tomcat禁止不安全HTTP方法1、在tomcat的web.xml中可以配置如下内容让tomcat禁止不安全的HTTP方法/*PUTDELETEHEADOPTIONSTRACEBASIC2、Springboot使用内置tomcat没有web.xml配置文件,可以通过以下配置进行,简单来说就是要注入到Spring容器中@ConfigurationpublicclassTomcatConfig{@BeanpublicEmbeddedServletContainerFacto

Linux系统如何设置PATH环境变量在Linux系统中,PATH环境变量用于指定系统在命令行中搜索可执行文件的路径。正确设置PATH环境变量可以方便我们在任何位置执行系统命令和自定义命令。本文将介绍如何在Linux系统中设置PATH环境变量,并提供详细的代码示例。查看当前的PATH环境变量在终端中执行以下命令,可以查看当前的PATH环境变量:echo$P

1.HttpURLConnection使用JDK原生提供的net,无需其他jar包,代码如下:importcom.alibaba.fastjson.JSON;importjava.io.BufferedReader;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.io.OutputStream;importjava.net.HttpURLConnection;

一、前言#ssl写在443端口后面。这样http和https的链接都可以用listen443sslhttp2default_server;server_namechat.chengxinsong.cn;#hsts的合理使用,max-age表明hsts在浏览器中的缓存时间,includesubdomainscam参数指定应该在所有子域上启用hsts,preload参数表示预加载,通过strict-transport-security:max-age=0将缓存设置为0可以撤销hstsadd_head

一、urllib概述:urllib是Python中请求url连接的官方标准库,就是你安装了python,这个库就已经可以直接使用了,基本上涵盖了基础的网络请求功能。在Python2中主要为urllib和urllib2,在Python3中整合成了urllib。Python3.x中将urllib2合并到了urllib,之后此包分成了以下四个模块:urllib.request:它是最基本的http请求模块,用来模拟发送请求urllib.error:异常处理模块,如果出现错误可以捕获这些异常urllib

httpkeepalive在http早期,每个http请求都要求打开一个tpcsocket连接,并且使用一次之后就断开这个tcp连接。使用keep-alive可以改善这种状态,即在一次tcp连接中可以持续发送多份数据而不会断开连接。通过使用keep-alive机制,可以减少tcp连接建立次数,也意味着可以减少time_wait状态连接,以此提高性能和提高httpd服务器的吞吐率(更少的tcp连接意味着更少的系统内核调用,socket的accept()和close()调用)。但是,keep-ali

设置path环境变量的方法:1、Windows系统,打开“系统属性”,点击“属性”选项,点击“高级系统设置”,在“系统属性”窗口中,选择“高级”标签,然后点击“环境变量”按钮,找到并点击“Path”编辑保存后即可;2、Linux系统,打开终端,打开你的bash配置文件,在文件末尾添加“export PATH=$PATH:文件路径”保存即可;3、MacOS系统,操作同上。

被动检查对于被动健康检查,nginx和nginxplus会在事件发生时对其进行监控,并尝试恢复失败的连接。如果仍然无法恢复正常,nginx开源版和nginxplus会将服务器标记为不可用,并暂时停止向其发送请求,直到它再次标记为活动状态。上游服务器标记为不可用的条件是为每个上游服务器定义的,其中包含块中server指令的参数upstream:fail_timeout-设置服务器标记为不可用时必须进行多次失败尝试的时间,以及服务器标记为不可用的时间(默认为10秒)。max_fails-设置在fai


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)
