Nginx入门必知

Posted IT技术栈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx入门必知相关的知识,希望对你有一定的参考价值。

          ↑

点击上方蓝色字体关注



nginx是一款轻量级Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,国内使用nginx的用户有:百度、京东新浪、网易、腾讯淘宝等。


这么多大公司都在用,那它的性能、稳定性肯定是不在话下,赶紧一起来学吧。




1、下载Nginx包并解压

Nginx入门必知


wget http://nginx.org/download/nginx-1.18.0.tar.gztar -zxvf nginx-1.18.0.tar.gz


2、安装编译工具及库文件

yum install -y gc gcc gcc-c++


3、安装依模块


yum install -y pcre-devel zlib-devel libtool openssl openssl-devel


4、执行configure 脚本,配置安装路径和模块


./configure --prefix=/home/appuser/nginx --with-http_ssl_module --with-pcre --with-stream--prefix表示编译后的程序存放的路径;--with表示指定加载某个模块(nginx默认有些模块不加载,可以通过这个指令指定加载);--without表示指定不加载某个某块(nginx默认加载一些模块,可以通过这个指令去掉某个模块);

以通过./configure –help查看需要with才加载和需要without才不加载的模块。


5、 编译和安装


make


编译完成之后,会在当前目录生产一个objs目录,可以通过objs目录下的ngx_modules.c文件查看编译了哪些模块,nginx应用程序二进制也在objs目录下面。


make install


执行这个命令会将二进制程序文件及配置文件拷贝到前面configure指定的路径下。所以首次要执行这个命令,如果后续升级nginx程序不能执行这个命令,我们不需要把初始配置文件也覆盖掉的应用目录,所以只能将编译好的新程序拷贝到sbin目录下。


6、查看安装版本及安装配置


cd /home/nginxuser/nginx /sbin./nginx -V


Nginx入门必知


/sbin/nginx ---nginx程序文件
/conf/nginx.conf ---配置文件
/logs/access.log ---访问日志
/logs/error.log ---错误日志


Nginx入门必知


1.配置介绍


Example:

worker_processes  1;    #工作线程数events {    worker_connections  1024;   #允许最大连接数,包括客户端建立连接和与上游服务器建立连接的总数}
http {   #http相关配置    include       mime.types;    default_type  application/octet-stream;
    #日志格式    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '                      '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  logs/access.log  main;
    server {        listen       8080;    #监听端口        server_name  localhost;   #监听地址        location / {            root   html;    #本地访问根目录            index  index.html index.htm;  #首页        }    }}


配置规则:


1、每条指令以“;”结尾,指令与参数间以空格符号分隔;

2、指令块以{}大括号将多条指令组织在一起;

3、通过include引入其他配置文件;

4、通过“#”符号注释;

5、通过“$”符号使用变量;

6、部分指令的参数支持正则表达式,比如location。


2.Location配置


2.1 location   ^~   /uri     #非正则匹配,普通字符串匹配


location ^~ /images/ {         ……; }


2.2 location   ~*   pattern    #表示不区分大小写的正则匹配


location ~*.(html|css|jpg|jpeg)$ {    ……;}


http://**** /login.css可以

http://**** /login.cSS可以


2.3 location   ~   pattern     #表示区分大小写的正则匹配


location ~.(html|css|jpg|jpeg)$ {    ……;}


http://**** /login.css可以

http://****/login.cSS不可以


2.4 location   /uri    #没有修饰符 表示:必须以指定模式开始


location /login {    ……;}


http://****/login
http:// ****/login?p1
http:// ****/login/
http:// ****/loginabc

这种效果跟第一种的效果一样。



Nginx入门必知


./sbin/nginx #启动nginx
./sbin/nginx -s reload #重新加载配置
./sbin/nginx -s stop #立即停止
./sbin/nginx -s quit #优雅的停止
./sbin/nginx -s reopen #重新打开access日志文件


Nginx入门必知


语法规则


location / {    proxy_pass       http://localhost:8000;    proxy_set_header Host      $host;    proxy_set_header X-Real-IP $remote_addr;}

实例


通过下面的配置可以实现正向代理,即nginx代理本地客户端访问互联网的服务器。


worker_processes  1;events {    worker_connections  1024;}http {    include       mime.types;    default_type  application/octet-stream;    sendfile        on;    keepalive_timeout  65;
    server {        listen       8080;        server_name  localhost;
        client_header_buffer_size 10m;        client_max_body_size 1024m;        client_body_buffer_size 10m;        proxy_buffers 4 128k;        proxy_busy_buffers_size 128k;
        location / {             proxy_pass       http://nginx.org/;             proxy_send_timeout 60;             proxy_read_timeout 60;        }
        error_page   500 502 503 504  /50x.html;        location = /50x.html {            root   html;        }    }}


Nginx入门必知


语法规则


http {    ...    server {        listen              443 ssl;        keepalive_timeout   70;        ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;        ssl_ciphers         AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;        ssl_certificate     /usr/local/nginx/conf/cert.pem;        ssl_certificate_key /usr/local/nginx/conf/cert.key;        ssl_session_cache   shared:SSL:10m;        ssl_session_timeout 10m;        ...    }}



实例


通过下面的配置可以实现正向代理https服务器。

worker_processes 1;events {    worker_connections  1024;}http {    include       mime.types;    default_type  application/octet-stream;    sendfile        on;    keepalive_timeout  65
    server {        listen       443 ssl;        server_name  localhost;        ssl_certificate      /home/appuser/nginx/server.crt;        ssl_certificate_key  /home/appuser/nginx/server.key;        location / {            proxy_pass https://www.baidu.com; }    }}


证书生成


openssl genrsa -des3 -out server.key 1024openssl req -new -key server.key -out server.csrcp server.key server.key.orgopenssl rsa -in server.key.org -out server.keyopenssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt



Nginx入门必知


语法规则


upstream backend {    server backend1.example.com       weight=5;    server backend2.example.com:8080;    server unix:/tmp/backend3;    server backup1.example.com:8080   backup;    server backup2.example.com:8080   backup;}
server {    location / {        proxy_pass http://backend;    }}

实例


通过下面的配置可以实现反向代理,即nginx代理服务器端被客户端访问并响应客户端。


worker_processes  1;events {    worker_connections  1024;}http {    include       mime.types;    default_type  application/octet-stream;    sendfile        on; keepalive_timeout 65;
    upstream backend {        server localhost:8089;   #上游服务器 }
    server {        listen       8080; server_name localhost;
        client_header_buffer_size 10m;        client_max_body_size 1024m;        client_body_buffer_size 10m;        proxy_buffers 4 128k; proxy_busy_buffers_size 128k;
        location / {             proxy_pass http://backend;        }        error_page   500 502 503 504  /50x.html;        location = /50x.html {            root   html;        }    }}




相关参数


gzip  on;               #打开压缩gzip_min_length 1000;          #最小压缩大小gzip_types      text/plain application/xml;     #压缩文件类型,可以设置为“*”gzip_comp_level 1; #压缩级别,1-9,1的压缩比例要小一点,压缩完的文件大一点,压缩级别大一点压缩后的文件小一点


总结一下


  • Nginx可以作为正向代理,反向代理服务器;

  • Nginx可以作为静态资源服务器,把很少变动的静态文件如html、css、js、图片等文件放在Nginx服务器上。

  • Nginx还有很多参数提供给我们根据实际业务进行个性化调优。

  • 当然,Nginx还支持让我们引入第三方模块功能。


*本文为IT技术栈原创文章,独家版权归于本平台,受到原创保护。任何渠道的转载请后台留言联系授权,侵权必究。

以上是关于Nginx入门必知的主要内容,如果未能解决你的问题,请参考以下文章

人人必知的10个jQuery小技巧

精品必知Pod生命周期

Python 必知的 20 个骚操作!

绩效与层级

MYSQL必知必会,详尽入门,一文帮你学会SQL必知必会

UML入门到精通--大神必知