Heim >Backend-Entwicklung >PHP-Tutorial >Nginx-Version von „helloworld'

Nginx-Version von „helloworld'

WBOY
WBOYOriginal
2016-08-10 08:48:381679Durchsuche

Nginx-Modulübersicht

Nginx-Module können nicht wie Apache dynamisch hinzugefügt werden. Alle Module müssen in der ausführbaren Nginx-Binärdatei vorkompiliert werden.
Nginx-Module haben drei Rollen:
(1) Handler (Verarbeitungsmodul) – werden zur Verarbeitung von HTTP-Anfragen und zur Ausgabe von Inhalten verwendet.
(2) Filter (Filtermodul) – werden zum Filtern des vom Header ausgegebenen Inhalts verwendet.
(3) Load-Balancer (Lastausgleichsmodul) – Wenn mehrere Server zur Auswahl stehen, wählen Sie einen Back-End-Server aus und leiten Sie HTTP-Anfragen an diesen Server weiter.

Schreiben und Installieren des Hello World-Moduls

(1) Führen Sie den folgenden Befehl aus, um unser Nginx-Modul in dieses Verzeichnis zu schreiben:
mkdir -p /opt/nginx_hello_world
cd / opt /nginx_hello_world
(2) Beginnen Sie mit der Erstellung der für das Nginx-Modul erforderlichen Konfigurationsdatei (mit dem Namen config)
vim /opt/nginx_hello_world
Geben Sie dann den folgenden Inhalt zum Speichern und Beenden ein:

<code>ngx_sdd
HTTP_MODULES=<span>"<span>$HTTP_MODULES</span> ngx_http_hello_world_module"</span>
NGX_ADD>"<span>$NGX_ADDON_SRCS</span><span>$ngx_addon_dir</span>/ngx_http_hello_world_module.c"
CORE_LIBS=<span>"<span>$CORE_LIBS</span> -lpcre"</span></code>

(3) Erstellen Sie die Programmdatei des Nginx-Moduls c (das Format ist „ngx_http_module name_module.c“, in diesem Fall: ngx_http_hello_world_module.c)
vim /opt/nginx_hello_world/ngx_http_hello_world_module.c

<code><span>#include <ngx_config.h></span><span>#include<ngx_core.h></span><span>#include<ngx_http.h></span><span>static</span><span>char</span> *ngx_http_hello_world(ngx_conf_t *cf,ngx_command_t *cmd,<span>void</span> *conf);

<span>static</span> ngx_command_t ngx_http_hello_world_commands[]={
{
ngx_string(<span>"hello_world"</span>),
NGX_HTTP_LOC_CONF|NGX_CONF_NOARGS,
ngx_http_hello_world,
<span>0</span>,
<span>0</span>,
<span>NULL</span>
},
ngx_null_command
};

<span>static</span> u_char ngx_hello_world[]=<span>"hello world"</span>;
<span>static</span> ngx_http_module_t ngx_http_hello_world_module_ctx ={
<span>NULL</span>,
<span>NULL</span>,

<span>NULL</span>,
<span>NULL</span>,

<span>NULL</span>,
<span>NULL</span>,

<span>NULL</span>,
<span>NULL</span>
};
ngx_module_t ngx_http_hello_world_module ={
NGX_MODULE_V1,
&ngx_http_hello_world_module_ctx,
ngx_http_hello_world_commands,
NGX_HTTP_MODULE,
<span>NULL</span>,
<span>NULL</span>,
<span>NULL</span>,
<span>NULL</span>,
<span>NULL</span>,
<span>NULL</span>,
<span>NULL</span>,
NGX_MODULE_V1_PADDING
};

<span>static</span> ngx_int_t ngx_http_hello_world_handler(ngx_http_request_t *r)
{
ngx_buf_t *b;
ngx_chain_t out;

r->headers_out<span>.content_type</span><span>.len</span> = <span>sizeof</span>(<span>"text/plain"</span>) - <span>1</span>;
r->headers_out<span>.content_type</span><span>.data</span> = (u_char *)<span>"text/plain"</span> ;

b= ngx_pcalloc(r->pool,<span>sizeof</span>(ngx_buf_t));

out<span>.buf</span> =b;
out<span>.next</span> =<span>NULL</span>;

b->pos=ngx_hello_world;
b->last =ngx_hello_world +<span>sizeof</span>(ngx_hello_world);
b->memory =<span>1</span>;
b->last_buf =<span>1</span>;

r->headers_out<span>.status</span> = NGX_HTTP_OK;
r->headers_out<span>.content_length_n</span> =<span>sizeof</span>(ngx_hello_world);
ngx_http_send_header(r);

<span>return</span> ngx_http_output_filter(r,&out);
}
<span>static</span><span>char</span> *ngx_http_hello_world(ngx_conf_t *cf,ngx_command_t *cmd, <span>void</span> *conf)
{ngx_http_core_loc_conf_t *clcf;
clcf = ngx_http_conf_get_module_loc_conf(cf, ngx_http_core_module);
clcf->handler = ngx_http_hello_world_handler;
<span>return</span> NGX_CONF_OK;

}</code>

(4) Lesen Sie meinen Nginx-Installationsartikel, der in diesem Schritt etwas anders ist
**./configure –prefix=/usr/local/nginx –add-module=/opt/nginx_hello_world
make&&make install**
(5) Konfigurieren Sie nginx.conf (/usr/local/nginx/conf/nginx.conf) und fügen Sie den folgenden Inhalt zum Serverteil hinzu:
**location = /hello{
hallo_welt;
}**
(6) Starten Sie Nginx (starten Sie Nginx) und greifen Sie über einen Browser auf http://localhost/hello zu. Sie können den vom geschriebenen Nginx Hello World-Modul ausgegebenen Text „Hallo Welt“ sehen.

Codeanalyse im nächsten Artikel schreiben

Urheberrechtserklärung: Dieser Artikel ist ein Originalartikel des Bloggers und darf nicht ohne die Erlaubnis des Bloggers reproduziert werden.

Das Obige stellt die Nginx-Version von „helloworld“ vor, einschließlich verschiedener Aspekte. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.

Stellungnahme:
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