什么是Nginx?Nginx (engine x) 是一款轻量级的 Web 服务器 、反向代理服务器及电子邮件(IMAP/POP3)代理服务器 。
![Nginx 极简教程,常用场景统统解析](http://img.jiangsulong.com/220418/0214211R8-0.jpg)
文章插图
什么是反向代理?反向代理(Reverse Proxy)方式是指以代理服务器来接受 internet 上的连接请求 , 然后将请求转发给内部网络上的服务器 , 并将从服务器上得到的结果返回给 internet 上请求连接的客户端 , 此时代理服务器对外就表现为一个反向代理服务器 。
![Nginx 极简教程,常用场景统统解析](http://img.jiangsulong.com/220418/0214216019-1.jpg)
文章插图
Nginx入门详细安装方法请参考:Nginx 运维 https://github.com/dunwu/nginx-tutorial/blob/master/docs/nginx-ops.md
使用nginx 的使用比较简单 , 就是几条命令 。
常用到的命令如下:
nginx -s stop快速关闭Nginx , 可能不保存相关信息 , 并迅速终止web服务 。nginx -s quit平稳关闭Nginx , 保存相关信息 , 有安排的结束web服务 。nginx -s reload因改变了Nginx相关配置 , 需要重新加载配置而重载 。nginx -s reopen重新打开日志文件 。nginx -c filename为 Nginx 指定一个配置文件 , 来代替缺省的 。nginx -t不运行 , 而仅仅测试配置文件 。nginx 将检查配置文件的语法的正确性 , 并尝试打开配置文件中所引用到的文件 。nginx -v显示 nginx 的版本 。nginx -V显示 nginx 的版本 , 编译器版本和配置参数 。
如果不想每次都敲命令 , 可以在 nginx 安装目录下新添一个启动批处理文件startup.bat , 双击即可运行 。内容如下:@echo offrem 如果启动前已经启动nginx并记录下pid文件 , 会kill指定进程nginx.exe -s stoprem 测试配置文件语法正确性nginx.exe -t -c conf/nginx.confrem 显示版本信息nginx.exe -vrem 按照指定配置去启动nginxnginx.exe -c conf/nginx.conf
如果是运行在 linux 下 , 写一个 shell 脚本 , 大同小异 。Nginx 实战我们先实现一个小目标:不考虑复杂的配置 , 仅仅是完成一个 http 反向代理 。
nginx.conf 配置文件如下:
注:conf/nginx.conf 是 nginx 的默认配置文件 。你也可以使用 nginx -c 指定你的配置文件
#运行用户#user somebody;#启动进程,通常设置成和cpu的数量相等worker_processes1;#全局错误日志error_logD:/Tools/nginx-1.10.1/logs/error.log;error_logD:/Tools/nginx-1.10.1/logs/notice.lognotice;error_logD:/Tools/nginx-1.10.1/logs/info.loginfo;#PID文件 , 记录当前启动的nginx的进程IDpidD:/Tools/nginx-1.10.1/logs/nginx.pid;#工作模式及连接数上限events {worker_connections 1024;#单个后台worker process进程的最大并发链接数}#设定http服务器 , 利用它的反向代理功能提供负载均衡支持http {#设定mime类型(邮件支持类型),类型由mime.types文件定义includeD:/Tools/nginx-1.10.1/conf/mime.types;default_typeApplication/octet-stream;#设定日志log_formatmain'[$remote_addr] - [$remote_user] [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_logD:/Tools/nginx-1.10.1/logs/access.log main;rewrite_logon;#sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件 , 对于普通应用 , #必须设为 on,如果用来进行下载等应用磁盘IO重负载应用 , 可设置为 off , 以平衡磁盘与网络I/O处理速度 , 降低系统的uptime.sendfileon;#tcp_nopushon;#连接超时时间keepalive_timeout120;tcp_nodelayon;#gzip压缩开关#gzipon;#设定实际的服务器列表upstream zp_server1{server 127.0.0.1:8089;}#HTTP服务器server {#监听80端口 , 80端口是知名端口号 , 用于HTTP协议listen80;#定义使用www.xx.com访问server_namewww.helloworld.com;#首页index index.html#指向webapp的目录root D:1_WorkspaceProjectgithubzpSpringNotesspring-securityspring-shirosrcmainwebapp;#编码格式charset utf-8;#代理配置参数proxy_connect_timeout 180;proxy_send_timeout 180;proxy_read_timeout 180;proxy_set_header Host $host;proxy_set_header X-Forwarder-For $remote_addr;#反向代理的路径(和upstream绑定) , location 后面设置映射的路径location / {proxy_pass http://zp_server1;}#静态文件 , nginx自己处理location ~ ^/(images|JAVAscript|js|css|flash|media|static)/ {root D:1_WorkspaceProjectgithubzpSpringNotesspring-securityspring-shirosrcmainwebappviews;#过期30天 , 静态文件不怎么更新 , 过期可以设大一点 , 如果频繁更新 , 则可以设置得小一点 。expires 30d;}#设定查看Nginx状态的地址location /NginxStatus {stub_statuson;access_logon;auth_basic"NginxStatus";auth_basic_user_fileconf/htpasswd;}#禁止访问 .htxxx 文件location ~ /.ht {deny all;}#错误处理页面(可选择性配置)#error_page404/404.html;#error_page500 502 503 504/50x.html;#location = /50x.html {#roothtml;#}}}
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- RedHat Linux系统U盘安装图文教程
- 服务器之间实现免密登录的简易教程
- 怎样做淘宝客在淘宝上拿佣金 怎么开通淘宝客赚佣金教程
- 性能提升9倍的 nginx 线程池,你了解多少?
- 简单DIY美甲步骤教程
- Go 语言 Web 框架 Echo 系列教程
- 淘宝关键词优化技巧教程 淘宝怎样优化关键词
- 安卓|哔哩哔哩车机版开放下载:页面极简、支持弹幕
- 升了iOS14连奶茶都点不了?保姆级降级教程在这
- 开设淘宝店的主要流程 淘宝店运营流程教程