nginx 基础及使用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx 基础及使用相关的知识,希望对你有一定的参考价值。
nginx由于出色的性能,在世界范围内受到了越来越多人的关注,淘宝内部被广泛使用
介绍:
Nginx俄罗斯人编写的十分轻量级HTTP服务器,是一个高性能HTTP和反向代理服务器,同时也是一个IMAP、POP3、SMTP代理服务器,Nginx以事件驱动的方式编写,所以有非常好的性能,同事也是一个非常高效的反向代理,负载平衡,其拥有匹配Lighttpd的性能,同时还没有Lighttpd的内存泄漏问题。
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。
特点:
Nginx作为HTTP服务器,有几个基本特性:
l 处理静态文件,索引文件以及自动索引,打开文件描述符缓冲,
l 无缓存的反向代理加速,简单的负载均衡和容错
l FastCGI,简单的负载均衡和容错
l 模块化结构,包括gzipping,byte ranges,chunked respinse,以及SSI-filter等filter如果由 FastCGI 或其它代理服务器处理单页中存在的多个 SSI,则这项处理可以并行运行,而不需要相互等待。
l 支持 SSL 和 TLSSNI.
配置:
nginx.conf 是主配置文件
worker_process 工作进程的数量
worker_connections 表示每个工作进程的最大连接数量
server{}块定义了虚拟主机
l listener监听接口,监听本机ip和端口
l server_name监听域名
- 完整的主机名 如:api.luf.com
- 含有通配符 如*.luf.com 或者 api.* (通配符只能在开头或者结尾,只能有一个)
- 正则表达式,以~开头
l location{}是用来为配置的URI进行配置,URI即语法中的“/uri/" location / {}匹配任何查询,因为所有请求都是以/开头
- root指定对应URI的资源查找路径,
- index指定首页index文件的名称,可以配置多个,以空格分开。
- ~ 表示执行一个正则匹配,区分大小写
- ~* 表示执行一个正则匹配,不区分大小写
- ^~ 表示普通字符匹配,如果该选项匹配,值匹配该选项,一般用来匹配目录
- = 进行普通字符精确匹配
- @ 定义个命令location 使用在内部定向时,
mime.types
文件扩展名与文件类型映射表,Nginx根据映射关系,设置HTTP请求响应头的conntent-type值。
架构:
Nginx启动后,后台进程中包含一个master进程和多个worker进程。master来管理worker进程,所以我们只需要与master进程通信就行了,master进程会接收来自外界发来的信号,在根据信号做不同的事情,比如kill -HUP pid则是告诉Nginx,从容地重启Nginx,(过程:首先从新加载配置文件,然后在启动新的worker进程,并想所有旧的worker发送信号退出,新的worker启动后,就开始接收新的请求,老的worker在接收到信号后,不在接收新的请求,并在当前进程中所有未处理完的请求处理完成后在退出)在Nginx0.8版本之后,引入了一系列命令行参数管理,比如./nginx -s reload 重启, ./nginx -s stop 停止。
Nginx使用
使用:
转发:
server_name localhost:8080;
location / {
proxy_pass http://localhost:8080;
}
常用命令:
l 开始: start nginx
l 停止: nginx -s stop
l nginx -s reload 在Windows下失效
错误:
404 Not Found: root路径时相对路径 替换使用 : alias /space/ReactRouterPro/;
react-router 刷新403 : try_files $uri /index.html; 重定向指令 前提history类型为browerHistory
语法:
Nginx的配置文件使用的就是一门微型的编程语言
l 变量只能存放一种类型的值,字符串
a) set $a ‘hello world‘ set配置指令对变量$a进行了赋值操作
b) $uri 请求中的当前URI不带请求参数,可以通过内部重定向
c) $arg_name 请求中带的参数
d) $hostname 主机名
e) $args 请求中的参数值
f) $query_string 同args
g) $request 客户端请求地址
h) $request_uri 这个变量等于包含一些客户端请求参数的原始URI
l 如果你网站上一些资源永久移除了,最快捷的方法就是使用return直接返回
location /wrong/url { return 404; }
l return的第一个参数是响应代码可选第二个参数可以重定向
location /permanently/moved/url { return 301 http://www.example.com/moved/here; }
l 错误处理: error_page命令可以配置特定错误码的错误页面,或者重定向到其他页面
l 重写URIs: rewrite 指令可以多次修改请求的URI,第一个参数是匹配的正则表达式,第二个参数是将要替换的URI,第三个参数可选,指示是否继续可以重写或者返回重定向代码
location /users/ { rewrite ^/users/(.*)$ /show?user=$1 break; }
我的实例: conf
http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 8888; server_name localhost; location / { #用于React router项目 alias /space/ReactRouter/; # 配置非Nginx路径的其他路径 try_files $uri /index.html; index index.html; } } # server { # listen 8889; # server_name localhost; # location / { # root html; # index index.html; # } # location / { # proxy_pass https://***.com; #代理其他服务器 # } # } }
说明: 仅阅读总结。
以上是关于nginx 基础及使用的主要内容,如果未能解决你的问题,请参考以下文章