Heim Backend-Entwicklung PHP-Tutorial Anatomie des automatischen Nginx-Skripts (1) Parsen des Konfigurationsoptionsskripts auto/options

Anatomie des automatischen Nginx-Skripts (1) Parsen des Konfigurationsoptionsskripts auto/options

Aug 08, 2016 am 09:19 AM
http path temp

解剖 Nginx ·自动脚本篇(1)解析配置选项脚本 auto/options
  • Author: Poechant
  • Blog: blog.CSDN.net/Poechant
  • Email: zhongchao.ustc#gmail.com (#->@)
  • Date: March 4th, 2012
  • Copyright ? 柳大·Poechant
  • 在安装Nginx之前(即运行make脚本之前),首先是进行安装的配置准备,包括环境检查及生成文件。这些工作是由自动脚本完成的。和绝大多数软件一样,Nginx的自动脚本的入口,同样是名为configure的文件。除了configure,其他的自动脚本都在auto目录下。通过分析configure脚本源码,我们可以看到,configure首先运行了auto目录下的几个自动脚本,如下:
    <code>. auto/options
    . auto/init
    . auto/sources
    </code>
    Nach dem Login kopieren
    其中通过运行auto/options脚本,来设定配置选项。下面将逐步分析auto/options脚本是如何工作的。1 读取configure配置参数开始先声明了 N 多变量,然后最主要的部分从这段开始:
    <code>opt=
    
    for option
        do
        ...
    done
    </code>
    Nach dem Login kopieren
    这段实际上是处理运行./configure的时候携带的参数选项,for循环每次对应一个参数选项 option。要注意for循环体上面有一个全局的opt变量。这个循环体内的第一个语句是最重要是,它是:
    <code>opt="$opt `echo $option | sed -e \"s/\(--[^=]*=\)\(.* .*\)/\1'\2'/\"`"
    </code>
    Nach dem Login kopieren
    通过循环运行该语句后,opt的值就是一个由空格来分隔的参数列表。然后在循环体中接下来是一个case-esac,用来得到参数值,如下:
    <code>case "$option" in
        -*=*) value=`echo "$option" | sed -e 's/[-_a-zA-Z0-9]*=//'` ;;
           *) value="" ;;
    esac
    </code>
    Nach dem Login kopieren
    其含义是将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>
    Nach dem Login kopieren
    各匹配的分支语句中进行配置变量的赋值。这些变量在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>
    Nach dem Login kopieren
    从而提示用户参数错误,并使脚本退出运行。经过多次循环,for-do-done就结束。2 设定NGX_CONFIGURE变量处理完所有option后,opt就如我们上面提到的,成为由空格分割的配置项值,并被赋给NGX_CONFIGURE变量:
    <code>NGX_C
    </code>
    Nach dem Login kopieren
    3 是否显示configure的帮助信息再看下面这句:
    <code>if [ $help = yes ]; then
    cat << END
        …
    END
        exit 1
    fi
    </code>
    Nach dem Login kopieren
    默认情况下$help变量值在初始化时就为no。如果configure选项中指定了help参数,则$help参数为yes,则会运行cat命令,显示大段的帮助信息,然后退出。4 是否关闭 HTTP 功能默认情况下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>
    Nach dem Login kopieren
    5 是否指定运行于 Windows 平台如果显式指定了--crossbuild参数,则变量NGX_PLATFORM会被赋予当前for-do-done循环中的"$value"值,也就是--crossbuild的参数值,一般在考虑在Windows平台使用时才会用到,看下面的语句:
    <code>if [ ".$NGX_PLATFORM" = ".win32" ]; then
        NGX_WINE=$WINE
    fi
    </code>
    Nach dem Login kopieren
    如果指定--crossbuild=win32,则NGX_WINE就会被赋值了。6 Nginx 配置文件路径在加载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>
    Nach dem Login kopieren
    然后获取配置文件所在目录的:
    <code>NGX_C $NGX_CONF_PATH`
    </code>
    Nach dem Login kopieren
    如果指定参数--conf-path=/home/michael/nginx/conf/nginx.conf,则NGX_CONF_PREFIX的值就是/home/michael/nginx/conf7 Nginx 进程 ID 文件和锁文件路径下面是同样的方式初始化NGX_PID_PATHNGX_LOCK_PATH,分别对应configure参数--pid-path--lock-path,其缺省值分别为logs/nginx.pidlogs/nginx.lock
    <code>NGX_PID_PATH=${NGX_PID_PATH:-logs/nginx.pid}
    NGX_LOCK_PATH=${NGX_LOCK_PATH:-logs/nginx.lock}
    </code>
    Nach dem Login kopieren
    8 错误日志文件路径如果指定了参数--error-log-pathNGX_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>
    Nach dem Login kopieren
    9 HTTP 相关各路径
    <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>
    Nach dem Login kopieren
    10 Perl 模块如果指定了--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>
    Nach dem Login kopieren
    11 小结通过运行auto/options脚本,所有的配置项已经被正确解析并加载到相应的配置变量中了。-转载请注明来自“柳大的CSDN博客”:blog.csdn.net/Poechant-

    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.

    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

    Heiße KI -Werkzeuge

    Undresser.AI Undress

    Undresser.AI Undress

    KI-gestützte App zum Erstellen realistischer Aktfotos

    AI Clothes Remover

    AI Clothes Remover

    Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

    Undress AI Tool

    Undress AI Tool

    Ausziehbilder kostenlos

    Clothoff.io

    Clothoff.io

    KI-Kleiderentferner

    Video Face Swap

    Video Face Swap

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

    Heiße Werkzeuge

    Notepad++7.3.1

    Notepad++7.3.1

    Einfach zu bedienender und kostenloser Code-Editor

    SublimeText3 chinesische Version

    SublimeText3 chinesische Version

    Chinesische Version, sehr einfach zu bedienen

    Senden Sie Studio 13.0.1

    Senden Sie Studio 13.0.1

    Leistungsstarke integrierte PHP-Entwicklungsumgebung

    Dreamweaver CS6

    Dreamweaver CS6

    Visuelle Webentwicklungstools

    SublimeText3 Mac-Version

    SublimeText3 Mac-Version

    Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

    Was bedeutet der http-Statuscode 520? Was bedeutet der http-Statuscode 520? Oct 13, 2023 pm 03:11 PM

    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.

    Schritte zum Festlegen der PATH-Umgebungsvariablen des Linux-Systems Schritte zum Festlegen der PATH-Umgebungsvariablen des Linux-Systems Feb 18, 2024 pm 05:40 PM

    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

    Was ist der HTTP-Statuscode 403? Was ist der HTTP-Statuscode 403? Oct 07, 2023 pm 02:04 PM

    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.

    Erfahren Sie, wie Sie den temporären Dateispeicherort von Win7 ändern Erfahren Sie, wie Sie den temporären Dateispeicherort von Win7 ändern Jan 04, 2024 pm 11:25 PM

    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 gängige Anwendungsszenarien der Webseitenumleitung und verstehen Sie den HTTP-301-Statuscode Verstehen Sie gängige Anwendungsszenarien der Webseitenumleitung und verstehen Sie den HTTP-301-Statuscode Feb 18, 2024 pm 08:41 PM

    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 verwenden Sie Nginx Proxy Manager, um einen automatischen Sprung von HTTP zu HTTPS zu implementieren So verwenden Sie Nginx Proxy Manager, um einen automatischen Sprung von HTTP zu HTTPS zu implementieren Sep 26, 2023 am 11:19 AM

    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 des asynchronen HTTP-Downloads mehrerer PHP-Dateien Schnelle Anwendung: Praktische Entwicklungsfallanalyse des asynchronen HTTP-Downloads mehrerer PHP-Dateien Sep 12, 2023 pm 01:15 PM

    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# Häufige Netzwerkkommunikations- und Sicherheitsprobleme und Lösungen in C# Oct 09, 2023 pm 09:21 PM

    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

    See all articles