


Anatomie des automatischen Nginx-Skripts (1) Parsen des Konfigurationsoptionsskripts auto/options
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 << END … END exit 1 fi </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
脚本,所有的配置项已经被正确解析并加载到相应的配置变量中了。Das Obige hat die Anatomie des automatischen Nginx-Skripts (1) vorgestellt, das die Konfigurationsoptionen des Skripts auto/options analysiert, einschließlich einiger Aspekte des Inhalts. Ich hoffe, dass es für Freunde hilfreich sein wird, die an PHP-Tutorials interessiert sind.

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen





Der HTTP-Statuscode 520 bedeutet, dass der Server bei der Verarbeitung der Anfrage einen unbekannten Fehler festgestellt hat und keine genaueren Informationen bereitstellen kann. Wird verwendet, um darauf hinzuweisen, dass bei der Verarbeitung der Anforderung durch den Server ein unbekannter Fehler aufgetreten ist, der durch Serverkonfigurationsprobleme, Netzwerkprobleme oder andere unbekannte Gründe verursacht werden kann. Dies wird normalerweise durch Serverkonfigurationsprobleme, Netzwerkprobleme, Serverüberlastung oder Codierungsfehler verursacht. Wenn Sie auf einen Fehler mit dem Statuscode 520 stoßen, wenden Sie sich am besten an den Website-Administrator oder das technische Support-Team, um weitere Informationen und Unterstützung zu erhalten.

So legen Sie die Umgebungsvariable PATH in Linux-Systemen fest. In Linux-Systemen wird die Umgebungsvariable PATH verwendet, um den Pfad anzugeben, in dem das System in der Befehlszeile nach ausführbaren Dateien sucht. Durch die korrekte Einstellung der Umgebungsvariablen PATH können wir Systembefehle und benutzerdefinierte Befehle an jedem Ort ausführen. In diesem Artikel wird erläutert, wie die Umgebungsvariable PATH in einem Linux-System festgelegt wird, und es werden detaillierte Codebeispiele bereitgestellt. Zeigen Sie die aktuelle PATH-Umgebungsvariable an. Führen Sie den folgenden Befehl im Terminal aus, um die aktuelle PATH-Umgebungsvariable anzuzeigen: echo$P

Der HTTP-Statuscode 403 bedeutet, dass der Server die Anfrage des Clients abgelehnt hat. Die Lösung für den HTTP-Statuscode 403 ist: 1. Überprüfen Sie die Authentifizierungsdaten. Wenn der Server eine Authentifizierung erfordert, stellen Sie sicher, dass die richtigen Anmeldedaten angegeben werden. 2. Überprüfen Sie die IP-Adresseinschränkungen Die IP-Adresse des Clients ist eingeschränkt oder nicht auf der Blacklist. Wenn der Statuscode 403 mit den Berechtigungseinstellungen der Datei oder des Verzeichnisses zusammenhängt, stellen Sie sicher, dass der Client über ausreichende Berechtigungen zum Zugriff auf diese Dateien oder Verzeichnisse verfügt. usw.

Der temporäre Ordner ist unser temporärer Dateispeicherort. Wenn zu viele temporäre Dateien vorhanden sind, insbesondere wenn sich der temporäre Ordner auf der Systemfestplatte befindet, beeinträchtigt dies wahrscheinlich die Laufgeschwindigkeit des Systems. Wir können das Problem lösen, indem wir den temporären Standort ändern. Tutorial zur Standortänderung von Win7temp 1. Klicken Sie zunächst mit der rechten Maustaste auf „Computer“ und öffnen Sie „Eigenschaften“ 2. Klicken Sie links auf „Erweiterte Systemeinstellungen“ 3. Klicken Sie unten auf „Umgebungsvariablen“ 4. Wählen Sie „temp“ und klicken Sie auf „Bearbeiten“ 5 . Ändern Sie dann einfach den „Variablenwert“ in den Pfad, der geändert werden muss.

Verstehen Sie die Bedeutung des HTTP 301-Statuscodes: Häufige Anwendungsszenarien der Webseitenumleitung. Mit der rasanten Entwicklung des Internets werden die Anforderungen der Menschen an die Webseiteninteraktion immer höher. Im Bereich Webdesign ist die Webseitenumleitung eine gängige und wichtige Technologie, die über den HTTP-301-Statuscode implementiert wird. In diesem Artikel werden die Bedeutung des HTTP 301-Statuscodes und häufige Anwendungsszenarien bei der Webseitenumleitung untersucht. Der HTTP-Statuscode 301 bezieht sich auf eine permanente Weiterleitung (PermanentRedirect). Wenn der Server die des Clients empfängt

So implementieren Sie den automatischen Sprung von HTTP zu HTTPS mit NginxProxyManager Mit der Entwicklung des Internets beginnen immer mehr Websites, das HTTPS-Protokoll zur Verschlüsselung der Datenübertragung zu verwenden, um die Datensicherheit und den Schutz der Privatsphäre der Benutzer zu verbessern. Da das HTTPS-Protokoll die Unterstützung eines SSL-Zertifikats erfordert, ist bei der Bereitstellung des HTTPS-Protokolls eine gewisse technische Unterstützung erforderlich. Nginx ist ein leistungsstarker und häufig verwendeter HTTP-Server und Reverse-Proxy-Server sowie NginxProxy

Schnelle Anwendung: Praktische Entwicklungsfallanalyse von PHP Asynchroner HTTP-Download mehrerer Dateien Mit der Entwicklung des Internets ist die Funktion zum Herunterladen von Dateien zu einem der Grundbedürfnisse vieler Websites und Anwendungen geworden. In Szenarien, in denen mehrere Dateien gleichzeitig heruntergeladen werden müssen, ist die herkömmliche synchrone Download-Methode oft ineffizient und zeitaufwändig. Aus diesem Grund ist die Verwendung von PHP zum asynchronen Herunterladen mehrerer Dateien über HTTP eine zunehmend verbreitete Lösung. In diesem Artikel wird anhand eines tatsächlichen Entwicklungsfalls detailliert analysiert, wie PHP asynchrones HTTP verwendet.

Häufige Netzwerkkommunikations- und Sicherheitsprobleme und Lösungen in C# Im heutigen Internetzeitalter ist Netzwerkkommunikation zu einem unverzichtbaren Bestandteil der Softwareentwicklung geworden. In C# treten normalerweise einige Netzwerkkommunikationsprobleme auf, z. B. die Sicherheit der Datenübertragung, die Stabilität der Netzwerkverbindung usw. In diesem Artikel werden häufig auftretende Netzwerkkommunikations- und Sicherheitsprobleme in C# ausführlich erläutert und entsprechende Lösungen und Codebeispiele bereitgestellt. 1. Netzwerkkommunikationsprobleme Unterbrechung der Netzwerkverbindung: Während des Netzwerkkommunikationsprozesses kann die Netzwerkverbindung unterbrochen werden, was zu Problemen führen kann
