nginx学习
来源:互联网 发布:共享景观设计 知乎 编辑:程序博客网 时间:2024/06/05 23:43
了解http协议的童鞋都清楚在浏览器发起请求到最终请求结果返回的过程,盗用一张图展示这个过程,如下所示:
当然,第5条红色标注的不属于基本的请求处理流程,但是本文主要介绍的就是nginx。
一,nginx介绍、安装、基本用法
根据官方文档来说,nginx就是一个http和反向代理服务器。对于我们而言,它比tomcat更易于学习和使用,下面说说如何安装:
1.打开官网,下载,一般都是下载稳定版
2.下载完后,解压到一个目录中,启动方式有两种,第一种点击解压后的nginx.exe启动,第二种便是通过命令行启动 start nginx
, 当然,如果你不想每次启动都要进入到nginx所在目录,你就需要在系统配置里配置下它的PATH环境变量。
3.nginx的几种基本命令行,如下:
1. start nginx #启动nginx服务器2. nginx -s reload #假如你编辑了nginx的某个配置文件,通过这个命令行重新加载一遍,如果有错,会有提示#3. nginx -s stop #关闭服务器4. nginx -s quit #也是关闭服务器5. nginx -s reopen #重新打开日志文件
2.nginx文件配置
这里可以参照这个博客,讲的很详细http://www.jianshu.com/p/bed000e1830b
3.nginx反向代理实例
最近做一个上传头像的功能,之前有听说过反向代理这回事,便在这个地方牛刀小试一下,也是帮助学习nginx。
首先看下实例中nginx的配置文件/conf/nginx.conf:
http { ... sendfile on; tcp_nopush on; sendfile_max_chunk 256k; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; #自己的应用服务器 upstream localhost { server localhost:8989; #node服务器 } server { listen 80; server_name localhost; autoindex_exact_size off; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://localhost; index index.html; } #上传的图片目录位置,上传成功后只需打开http://localhost/image/图片名便可看到图片 location /image/ { expires 30d; root D:/ngnix/nginx-1.11.13/files;#图片存放位置 } #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; } }}
node服务器,路径配置/config/index.js
module.exports = { "image_url":"http://localhost/image", //配置文件访问路径 "image_dir":"D:/ngnix/nginx-1.11.13/files/image", //最终图片路径 "tmp_dir":"D:/ngnix/nginx-1.11.13/tmp", //临时路径 "port": 8989}
使用node.js第三方模块formidable,处理上传头像路径问题,主要代码如下:
var formidable = require('formidable'), path = require('path'), fs = require('fs');var setting = require('../config');/** * 上传 */exports.upload = function(req,res){ var form = new formidable.IncomingForm(); form.encoding = 'utf-8'; //图片存放目录 var img_dir = setting.image_dir; //上传文件的临时路径 var tmp_dir = setting.tmp_dir; form.uploadDir = tmp_dir; //保留临时文件的扩展名 form.keepExtensions = true; //文件大小限制,默认2MB form.maxFieldsSize = 2 * 1024 * 1024; form.parse(req, function(err, fields, files) { //图片路径 var img_path = path.resolve(img_dir, files.file.name); fs.rename(files.file.path, img_path, function(err){ if(err){ res.json({code:10001,msg:err}); } else{ var img_url = `${setting.image_url}/${files.file.name}`; res.json({code:200, image_url:img_url}); } }) })}
客户端:
<form action="`http://localhost/upload`" method="post" enctype="multipart/form-data"> <input type="file" name="file"> <p> <input type="submit" value="上传"> </form>
结果
从返回的请求头可以看到server: nginx/1.11.13,可以看出使用了代理服务器。
这里的过程主要是,点击按钮,请求接口,请注意接口是写的http://localhost/upload
,能看出来这个url写的是nginx代理服务器的地址,请求发送到nginx,发现没这个upload,便会到配置中的node服务器中去找,nginx反向代理服务器便起到了一个负责转发请求的作用。
总结,nginx有许多学习的地方,本人不才,也只是刚学习不久,只能乱七八糟的表达出自己的理解………
- nginx学习
- Nginx学习
- Nginx学习
- nginx学习
- nginx 学习
- Nginx学习
- nginx学习
- nginx学习
- Nginx 学习
- nginx 学习
- nginx学习
- Nginx学习
- nginx学习
- NGINX学习
- nginx学习
- Nginx学习
- nginx学习
- Nginx学习
- TensorFlow安装(windows环境下)
- CodeVS 1044 拦截导弹(ACM)
- Unity判断一个物体是否在屏幕内外
- 第2章 人月神话
- FastDFS5.0.9基本安装配置
- nginx学习
- proteus第一个工程 流水灯实验
- java-finally块和return执行先后顺序
- 数据结构与算法(六)
- mysql 中的mysql数据库不见了
- crc32
- LeetCode109 Convert Sorted List to Binary Search Tree
- MySQL编程基础
- Android 用PopupWindow实现加载等待界面