Nginx-Schnellstart

王林
Freigeben: 2021-01-27 10:12:45
nach vorne
5237 Leute haben es durchsucht

Nginx-Schnellstart

nginx kurze Einführung:

(Lernvideo-Sharing: Einführung in die Programmierung)

Nginx (Engine x) ist ein leichter Webserver, Reverse-Proxy-Server und E-Mail-Proxyserver (IMAP/POP3). Es wurde in C von Igor Sysoev aus Russland entwickelt, während er für Rambler Media arbeitete.

Igor Sysoev hat den Nginx-Code als Open Source bereitgestellt und ihm die kostenlosste 2-Klausel-BSD-ähnliche Lizenz gegeben. Da Nginx eine ereignisgesteuerte Architektur verwendet, die Millionen von TCP-Verbindungen gleichzeitig verarbeiten kann, ermöglichen sein hochmodulares Design und die kostenlose Lizenz die Erweiterung von Nginx-Funktionen durch Module von Drittanbietern, und das hervorragende Design sorgt für hervorragende Stabilität Es wird häufig als Webserver auf stark frequentierten Websites verwendet.

Die sogenannte Reverse-Proxy-Methode bezieht sich auf die Verwendung eines Proxyservers zur Annahme von Verbindungsanfragen im Internet, die Weiterleitung der Anfragen an den Server im internen Netzwerk und die Rückgabe der vom Server erhaltenen Ergebnisse an die Person, die die Verbindung anfordert Beim Internet-Client erscheint der Proxy-Server zu diesem Zeitpunkt nach außen als Reverse-Proxy-Server.

Da es einen Reverse-Proxy gibt, gibt es auch einen Forward-Proxy. Ein Forward-Proxy ist ein Server zwischen dem Client und dem Originalserver. Um Inhalte vom Originalserver zu erhalten, sendet der Client eine Anfrage an den Proxy und gibt das Ziel an. Der Proxy leitet die Anfrage dann an den Originalserver weiter erhaltene Inhalte an den Kunden.

Man kann sagen, dass der Forward-Proxy den Client und der Reverse-Proxy den Server darstellt.

Nginx-Schnellstart

Die Verwendung von Nginx hat die folgenden Vorteile:

Nginx-Schnellstart

Abhängige Bibliotheken

Heutzutage verwenden Server im Allgemeinen Linux-Betriebssysteme, bevor Sie Nginx kompilieren und installieren.

Im Folgenden sind mehrere Bibliotheken aufgeführt, die zur Vervollständigung der grundlegendsten Funktionen des Webservers erforderlich sind.

GCC

GCC (GNU Compiler Collection) kann zum Kompilieren von C-Sprachprogrammen verwendet werden.

Nginx stellt normalerweise keine ausführbaren Binärprogramme direkt bereit, daher müssen wir seinen Quellcode kompilieren.

Und wir können C++ verwenden, um das Nginx-HTTP-Modul zu schreiben, dann müssen wir den G++-Compiler verwenden.

Verwenden Sie yum, um den G++-Compiler zu installieren:

yum install -y gcc-c++
Nach dem Login kopieren

PCRE

PCRE-Bibliothek PCRE (Perl-kompatible reguläre Ausdrücke) ist eine von Philip Hazel entwickelte Funktionsbibliothek, die derzeit von vielen unterstützten Programmen verwendet wird reguläre Ausdrücke. Es entwickelte sich aus RegEx. Tatsächlich stammen die regulären Ausdrücke von Perl auch aus RegEx, das von Henry Spencer geschrieben wurde.

Wenn wir reguläre Ausdrücke in der Konfigurationsdatei nginx.conf verwenden, muss die PCRE-Bibliothek beim Kompilieren von Nginx in Nginx kompiliert werden, da das HTTP-Modul von Nginx darauf angewiesen ist, reguläre Ausdrücke zu analysieren.

Wenn Sie bestätigen, dass Sie keine regulären Ausdrücke verwenden, müssen Sie es natürlich nicht installieren.

Die Yum-Installationsmethode ist wie folgt:

yum install -y pcre pcre-devel
Nach dem Login kopieren

pcre-devel ist eine Entwicklungsbibliothek, die für die Sekundärentwicklung mit PCRE erforderlich ist, einschließlich Header-Dateien usw., die auch zum Kompilieren von Nginx erforderlich ist.

zlib-Bibliothek

zlib-Bibliothek wird verwendet, um den Inhalt von HTTP-Paketen im gzip-Format zu komprimieren. Wenn wir gzip in nginx.conf konfigurieren und angeben, dass gzip für bestimmte Arten von (Inhaltstyp-)HTTP-Antworten verwendet werden soll Komprimieren Sie, um das Netzwerkübertragungsvolumen zu reduzieren. Zlib muss während der Kompilierung in Nginx kompiliert werden.

Die Yum-Installationsmethode ist wie folgt

yum install -y zlib zlib-devel
Nach dem Login kopieren

In ähnlicher Weise ist zlib eine Bibliothek zur direkten Verwendung und zlib-devel eine Bibliothek, die für die sekundäre Entwicklung erforderlich ist.

OpenSSL-Entwicklungsbibliothek

Wenn unser Server nicht nur HTTP unterstützen, sondern auch HTTP über das sicherere SSL-Protokoll übertragen muss, benötigen wir OpenSSL.

Wenn wir außerdem Hash-Funktionen wie MD5 und SHA1 verwenden möchten, müssen wir diese auch installieren.

Die Yum-Installationsmethode ist wie folgt:

yum install -y openssl openssl-devel
Nach dem Login kopieren

Laden Sie das Quellcodepaket herunter

Geben Sie die Download-Schnittstelle der offiziellen Nginx-Website ein und wählen Sie die neueste stabile Version aus. 🔜 ./configure-Befehl Manchmal wird ein Fehler gemeldet, zum Beispiel kann die PCRE-Bibliothek nicht gefunden werden:

[root@host nginx]# wget http://nginx.org/download/nginx-1.16.0.tar.gz
--2019-05-23 03:28:52--  http://nginx.org/download/nginx-1.16.0.tar.gz
Resolving nginx.org... 62.210.92.35, 95.211.80.227, 2001:1af8:4060:a004:21::e3
Connecting to nginx.org|62.210.92.35|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1032345 (1008K) [application/octet-stream]
Saving to: “nginx-1.16.0.tar.gz”

100%[==========================================================================================================================================>] 1,032,345    715K/s   in 1.4s    

2019-05-23 03:28:53 (715 KB/s) - “nginx-1.16.0.tar.gz” saved [1032345/1032345]
Nach dem Login kopieren

Die normale Ausgabe sollte wie folgt sein und das Makefile wird generiert:

[root@host nginx]# tar xf nginx-1.16.0.tar.gz 
[root@host nginx]# ls
nginx-1.16.0  nginx-1.16.0.tar.gz
[root@host nginx]# cd nginx-1.16.0
[root@host nginx-1.16.0]# ls
auto  CHANGES  CHANGES.ru  conf  configure  contrib  html  LICENSE  man  README  src
Nach dem Login kopieren

Überprüfen Sie die Nginx-Version

Nach der Installation Wenn es erfolgreich ist, können Sie die Nginx-Version über den Parameter -v überprüfen.

./configure make make install
Nach dem Login kopieren

Startup

Nginx unterstützt den direkten Start und den Start mit Parametern, die unten demonstriert werden.

Portbelegung

Nginx muss Port 80 verwenden. Wenn Port 80 belegt ist, wird beim Start der folgende Fehler gemeldet:

./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using --with-pcre=<path> option.
Nach dem Login kopieren

Sie können die Portbelegung mit dem lsof-Tool überprüfen, wenn Sie es nicht installiert haben. Sie können den folgenden Befehl verwenden, um es zu installieren:

[root@host nginx-1.16.0]# ./configure
checking for OS
 + Linux 4.10.4-1.el6.elrepo.i686 i686
checking for C compiler ... found
 + using GNU C compiler
 + gcc version: 4.4.7 20120313 (Red Hat 4.4.7-23) (GCC) 
checking for gcc -pipe switch ... found
checking for -Wl,-E switch ... found
checking for gcc builtin atomic operations ... found
checking for C99 variadic macros ... found
checking for gcc variadic macros ... found
checking for gcc builtin 64 bit byteswap ... found
checking for unistd.h ... found
checking for inttypes.h ... found
checking for limits.h ... found
checking for sys/filio.h ... not found
checking for sys/param.h ... found
checking for sys/mount.h ... found
checking for sys/statvfs.h ... found
checking for crypt.h ... found
checking for Linux specific features
checking for epoll ... found
checking for EPOLLRDHUP ... found
checking for EPOLLEXCLUSIVE ... not found
checking for O_PATH ... not found
checking for sendfile() ... found
checking for sendfile64() ... found
checking for sys/prctl.h ... found
checking for prctl(PR_SET_DUMPABLE) ... found
checking for prctl(PR_SET_KEEPCAPS) ... found
checking for capabilities ... found
checking for crypt_r() ... found
checking for sys/vfs.h ... found
checking for nobody group ... found
checking for poll() ... found
checking for /dev/poll ... not found
checking for kqueue ... not found
checking for crypt() ... not found
checking for crypt() in libcrypt ... found
checking for F_READAHEAD ... not found
checking for posix_fadvise() ... found
checking for O_DIRECT ... found
checking for F_NOCACHE ... not found
checking for directio() ... not found
checking for statfs() ... found
checking for statvfs() ... found
checking for dlopen() ... not found
checking for dlopen() in libdl ... found
checking for sched_yield() ... found
checking for sched_setaffinity() ... found
checking for SO_SETFIB ... not found
checking for SO_REUSEPORT ... found
checking for SO_ACCEPTFILTER ... not found
checking for SO_BINDANY ... not found
checking for IP_TRANSPARENT ... found
checking for IP_BINDANY ... not found
checking for IP_BIND_ADDRESS_NO_PORT ... not found
checking for IP_RECVDSTADDR ... not found
checking for IP_SENDSRCADDR ... not found
checking for IP_PKTINFO ... found
checking for IPV6_RECVPKTINFO ... found
checking for TCP_DEFER_ACCEPT ... found
checking for TCP_KEEPIDLE ... found
checking for TCP_FASTOPEN ... not found
checking for TCP_INFO ... found
checking for accept4() ... found
checking for eventfd() ... found
checking for int size ... 4 bytes
checking for long size ... 4 bytes
checking for long long size ... 8 bytes
checking for void * size ... 4 bytes
checking for uint32_t ... found
checking for uint64_t ... found
checking for sig_atomic_t ... found
checking for sig_atomic_t size ... 4 bytes
checking for socklen_t ... found
checking for in_addr_t ... found
checking for in_port_t ... found
checking for rlim_t ... found
checking for uintptr_t ... uintptr_t found
checking for system byte ordering ... little endian
checking for size_t size ... 4 bytes
checking for off_t size ... 8 bytes
checking for time_t size ... 4 bytes
checking for AF_INET6 ... found
checking for setproctitle() ... not found
checking for pread() ... found
checking for pwrite() ... found
checking for pwritev() ... found
checking for sys_nerr ... found
checking for localtime_r() ... found
checking for clock_gettime(CLOCK_MONOTONIC) ... not found
checking for clock_gettime(CLOCK_MONOTONIC) in librt ... found
checking for posix_memalign() ... found
checking for memalign() ... found
checking for mmap(MAP_ANON|MAP_SHARED) ... found
checking for mmap("/dev/zero", MAP_SHARED) ... found
checking for System V shared memory ... found
checking for POSIX semaphores ... not found
checking for POSIX semaphores in libpthread ... found
checking for struct msghdr.msg_control ... found
checking for ioctl(FIONBIO) ... found
checking for struct tm.tm_gmtoff ... found
checking for struct dirent.d_namlen ... not found
checking for struct dirent.d_type ... found
checking for sysconf(_SC_NPROCESSORS_ONLN) ... found
checking for sysconf(_SC_LEVEL1_DCACHE_LINESIZE) ... found
checking for openat(), fstatat() ... found
checking for getaddrinfo() ... found
checking for PCRE library ... found
checking for PCRE JIT support ... not found
checking for zlib library ... found
creating objs/Makefile

Configuration summary
  + using system PCRE library
  + OpenSSL library is not used
  + using system zlib library

  nginx path prefix: "/usr/local/nginx"
  nginx binary file: "/usr/local/nginx/sbin/nginx"
  nginx modules path: "/usr/local/nginx/modules"
  nginx configuration prefix: "/usr/local/nginx/conf"
  nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
  nginx pid file: "/usr/local/nginx/logs/nginx.pid"
  nginx error log file: "/usr/local/nginx/logs/error.log"
  nginx http access log file: "/usr/local/nginx/logs/access.log"
  nginx http client request body temporary files: "client_body_temp"
  nginx http proxy temporary files: "proxy_temp"
  nginx http fastcgi temporary files: "fastcgi_temp"
  nginx http uwsgi temporary files: "uwsgi_temp"
  nginx http scgi temporary files: "scgi_temp"
Nach dem Login kopieren

Überprüfen Sie die Nutzung von Port 80 auf diesem Computer und beenden Sie den belegten Prozess:

[root@host sbin]# /usr/local/nginx/sbin/nginx -v nginx version: nginx/1.16.0
Nach dem Login kopieren

Standardmäßig starten

使用whereis命令查看nginx的安装目录:

[root@host nginx-1.16.0]# whereis nginx
nginx: /usr/local/nginx
Nach dem Login kopieren

如果不加任何参数启动,会使用默认的nginx.conf配置文件启动Nginx:

/usr/local/nginx/sbin/nginx
Nach dem Login kopieren

启动成功以后,再请求服务器的时候可以看到包含下面内容的网页:

Welcome to nginx!
If you see this page, the nginx web server is successfully installed and working. Further configuration is required.

For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.

Thank you for using nginx.
Nach dem Login kopieren

带参数启动

-c参数指定配置文件的启动方式:

./nginx -c mynginx.conf
Nach dem Login kopieren

-p参数指定Nginx的安装目录:

./nginx -p mydir/nginx
Nach dem Login kopieren

-g参数临时指定一些全局配置项

./nginx -g "pid varnginx/test.pid;"
Nach dem Login kopieren

上面这行命令意味着会把pid文件写到varnginx/test.pid中。

-g参数的约束条件是指定的配置项不能与默认路径下的nginx.conf中的配置项相冲突,否则无法启动。

就像上例那样,类似这样的配置项:pid logs/nginx.pid,是不能存在于默认的nginx.conf中的。

另一个约束条件是,以-g方式启动的Nginx服务执行其他命令行时,需要把-g参数也带上,否则可能出现配置项不匹配的情形。

在不启动Nginx的情况下,使用-t参数仅测试配置文件是否有错误。 例如:

./nginx -t
Nach dem Login kopieren

执行结果中显示配置是否正确。

[root@host sbin]# ./nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
Nach dem Login kopieren

测试配置选项时,使用-q参数可以不把error级别以下的信息输出到屏幕。 例如:

./nginx -t -q
Nach dem Login kopieren

停止服务

停止Nginx的服务主要有两种方式。

一种是快速停止,即立即停止Nginx服务正在处理的所有网络请求,马上丢弃连接停止服务。

另外一种是平缓地停止,即允许Nginx处理完当前的请求,但不再接收新的请求,之后再关闭连接,停止工作。

快速停止服务

/usr/local/nginx/sbin/nginx -s stop
Nach dem Login kopieren

kill服务

kill -s SIGTERM 进程ID或kill -s SIGINT 进程ID与上面./nginx -s stop命令的效果是一样的。

[root@host sbin]# ps -ef|grep nginx 
root     10568     1  0 04:22 ?        00:00:00 nginx: master process ./nginx
nobody   10569 10568  0 04:22 ?        00:00:00 nginx: worker process
root     10571  5440  0 04:23 pts/1    00:00:00 grep nginx
[root@host sbin]# kill -s SIGINT 10568
[root@host sbin]# ps -ef|grep nginx 
root     10574  5440  0 04:24 pts/1    00:00:00 grep nginx
[root@host sbin]#
Nach dem Login kopieren

优雅地停止服务

如果希望Nginx服务可以正常地处理完当前所有请求再停止服务,那么可以使用-s quit参数来停止服务。

例如:

./nginx -s quit
Nach dem Login kopieren

该命令与快速停止Nginx服务是有区别的。

当快速停止服务时,worker进程与master进程在收到信号后会立刻跳出循环,退出进程。

而“优雅”地停止服务时,首先会关闭监听端口,停止接收新的连接,然后把当前正在处理的连接全部处理完,最后再退出进程。

与快速停止服务相似,可以直接发送QUIT信号给master进程来停止服务,其效果与执行-s quit命令是一样的。

例如:

kill -s SIGQUIT <nginx master pid>
Nach dem Login kopieren

如果希望“优雅”地停止某个worker进程,那么可以通过向该进程发送WINCH信号来停止服务 。

例如:

kill -s SIGWINCH <nginx worker pid>
Nach dem Login kopieren

发送信号

./nginx -g TERM | INT | QUIT
Nach dem Login kopieren

TERM 和 INT 信号用于快速停止,QUIT 信号用于平滑停止。

Nginx重新加载配置

使运行中的Nginx重读配置项并生效

使用-s reload参数可以使运行中的Nginx服务重新加载nginx.conf文件。 例如:

usrlocal/nginx/sbin/nginx -s reload
Nach dem Login kopieren

日志文件回滚

使用-s reopen参数可以重新打开日志文件,这样可以先把当前日志文件改名或转移到其他目录中进行备份,再重新打开时就会生成新的日志文件。

这个功能使得日志文件不至于过大。 例如:

./nginx -s reopen
Nach dem Login kopieren

这与使用kill命令发送USR1信号效果相同。

kill -s SIGUSR1 <nginx master pid>
Nach dem Login kopieren

相关推荐:nginx教程

Das obige ist der detaillierte Inhalt vonNginx-Schnellstart. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:juejin.im
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage