Nginx
目录
介绍
Nginx是高性能,高并发,跨平台得Web服务器。
下载安装
windows使用Nginx,官网下载 解压即用
解压后点击nginx.exe ,运行成功logs目录下会有nginx.pid出现,失败得话看logs目录下得error.log日志即可。
运行后访问http://localhost:80
快速停止服务,进入安装目录下运行cmd
nginx -s stop
根据配置文件重启
nginx -s reload
Nginx五大模块
除了少量核心代码外,Nginx完全是由各种功能模块组成的。这些模块会根据配置参数决定自己的行为,在configure的参数中,我们把它们分为五大类
·事件模块。
·默认即编译进入Nginx的HTTP模块。
·默认不会编译进入Nginx的HTTP模块。
·邮件代理服务器相关的mail模块。
·其他模块。
Nginx配置
conf/nginx.conf 文件,内容除了很长的注释.
#user nobody;
worker_processes 1;
#######error日志的语法 语法: error_log/path/file level; /path/file 路径文件
#######level是日志的输出级别,取值范围是debug、info、notice、warn、error、crit、alert、emerg
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
##############如events{},http{}这是块配置项,用{}包裹
events {
###########定义每个worker进程可以同时处理的最大连接数
worker_connections 1024;
##########是否打开负载均衡 ,默认打开,如果关闭它,那么建立TCP连接的耗时会更短,但worker进程之间的负载会非常不均衡
accept_mutext on;
}
#############http配置块中还用server{}配置块 内层配置块会继承外层得配置,但如果内外层冲突得话,继续看会讲的
http {
### 配置项名 include ,include配置的值为 mime.type ,名与值 用空格做分隔(有多个值也是用空格分隔),结尾以分号结尾。
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;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
搭建静态web服务器
静态Web服务器的主要功能由ngx_http_core_module模块(HTTP框架的主要成员)实现。Nginx可以为静态Web服务器进行配置:
虚拟主机与请求的分发、文件路径的定义、内存及磁盘资源的分配、网络连接的设置、MIME类型的设置、对客户端请求的限制、文件操作的优化、对客户端请求的特殊处理.
server块在http块中
server {
#这里是我自己配置服务端口 静态资源处理
listen 8081;
server_name www.staticresources.com;
root D:/meida/learnonline; #访问文件根目录
autoindex on; #是否浏览文件下的列表
location / { #是否允许跨域
add_header 'Access-Control-Allow-Origin' $http_origin;
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,web-token,app-token,Authorization,Accept,Origin,Keep-Alive,User-Agent,X-Mx-ReqToken,X-Data-Type,X-Auth-Token,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type' 'text/plain; charset=utf-8';
add_header 'Content-Length' 0;
return 204;
}
}
}
Nginx做反向代理服务器
利用Nginx反向代理能减少web服务器(上游服务器)的压力原因,如上图2,应为Nginx与web端网络连接为"内网"传输速率快,而客户端与服务端网络较慢。此时使用代理先将信息放到代理服务器上,由代理服务器与web服务器之间传输速度会比客户端直接与web服务器连接会快。web服务器对外连接的反应更加迅速,不会使连接堆加。
反向代理的基本配置项
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
#反向代理
#upstream配置块负责负载均衡
upstream backend {
server localhost:9999;
}
server {
listen 8082;
server_name localhost;
location / {
#proxy_pass 的值可以直接是目标服务器的ip或域名这样就可以不用upstream块了 也可以利用upstream配置块 负载均衡
proxy_pass http://backend/;
}
}
}