一直听说过nginx的大名,也自己装过,但是未直接使用其各种牛X的功能。

今天试用了一下,只能用两字感叹:牛逼!比如它提供的配置检查功能,真是贴心极了,又比如我想要的静态内容浏览器端缓存功能,动态内容转发功能,都极其简单,不得不感叹啊。

我们先来看看nginx的各种能力,然后列出一些收集的nginx各项能力的配置以及一些调优的文章,供日后备用。

nginx我就不介绍了,大家都知道。其工作原理参考这里,里面也讲了nginx的模块开发http://blog.codinglabs.org/articles/intro-of-nginx-module-development.html

安装也略过,apt-get可以轻松搞定。

nginx的能力一览:

1. 负载均衡

2. 反向代理:整合后端的各种服务器和语言(PHP, PERL, TOMCAT),反向代理缓存,静态内容浏览器缓存,动静分离

3. 安全:防盗链,防爬虫,HTTPS

4. 其它:同memcache结合干各种层次的缓存,限速,自动裁剪图片,请求合并,集成lua,玩法太多了……

这边列举一些常见的配置(均来源于网上),方便日后使用:

nginx配置测试(假设nginx已经加入path,下同): nginx -t

nginx平滑重启:首先找到master processor的pid,简单点用ps -ef | grep nginx,然后kill -HUP pid

负载均衡

  1. http
  2. {
  3. upstream  myserver {
  4. server   192.168.12.181:80 weight=3 max_fails=3 fail_timeout=20s;
  5. server   192.168.12.182:80 weight=1 max_fails=3 fail_timeout=20s;
  6. server   192.168.12.183:80 weight=4 max_fails=3 fail_timeout=20s;
  7. }
  8. server
  9. {
  10. listen       80;
  11. server_name  www.domain.com 192.168.12.189;
  12. index index.htm index.html;
  13. root  /ixdba/web/wwwroot;
  14. location / {
  15. proxy_pass http://myserver;
  16. proxy_next_upstream http_500 http_502 http_503 error timeout invalid_header;
  17. include    /opt/nginx/conf/proxy.conf;
  18. }
  19. }
  20. }

虚拟主机

  1. http {
  2. server {
  3. listen          80;
  4. server_name     www.domain1.com;
  5. access_log      logs/domain1.access.log main;
  6. location / {
  7. index index.html;
  8. root  /web/www/domain1.com/htdocs;
  9. }
  10. }
  11. server {
  12. listen          80;
  13. server_name     www.domain2.com;
  14. access_log      logs/domain2.access.log main;
  15. location / {
  16. index index.html;
  17. root  /web/www/domain2.com/htdocs;
  18. }
  19. }
  20. include    /opt/nginx/conf/vhosts/www.domain2.com.conf;
  21. }
  1. server {
  2. listen          80;
  3. server_name     www.domain3.com;
  4. access_log      logs/domain3.access.log main;
  5. location / {
  6. index index.html;
  7. root  /web/www/domain3.com/htdocs;
  8. }
  9. }

反向代理,整合tomcat

  1. location / {
  2. proxy_pass http://localhost:8080;
  3. proxy_redirect off;
  4. proxy_set_header Host $host;
  5. proxy_set_header X-Real-IP $remote_addr;
  6. proxy_set_header X-Forworded-For $proxy_add_x_forwarded_for;
  7. proxy_connect_timeout 90;
  8. proxy_send_timeout 90;
  9. proxy_read_timeout 90;
  10. proxy_buffer_size 4k;
  11. proxy_buffers 4 32k;
  12. proxy_busy_buffers_size 64k;
  13. proxy_temp_file_write_size 64k;
  14. }

 反向代理,分离静态页面,并设置静态页面缓存时间(if-modify-since)

  1. location /img/ {
  2. alias /www/root/img/;
  3. expires 10d;
  4. }

设置Cache-Control

  1. add_header    Cache-Control  max-age=3600;

安全,防盗链

  1. location ~* \.(jpg|gif|png|swf|flv|wma|wmv|asf|mp3|mmf|zip|rar)$ {
  2. valid_referers none blocked *.ixdba1.net ixdba1.net;
  3. if ($invalid_referer) {
  4. rewrite ^/ http://www.ixdba.net/img/error.gif;
  5. #return 403;
  6. }
  7. }
  8. location /images {
  9. root /opt/nginx/html;
  10. valid_referers none blocked *.ixdba1.net ixdba1.net;
  11. if ($invalid_referer) {
  12. return   403;
  13. }
  14. }

安全,HTTPShttp://nginx.org/cn/docs/http/configuring_https_servers.html

又一枚神器:nginx的更多相关文章

  1. 高并发神器 Nginx,到底该怎么学?

    Java技术栈 www.javastack.cn 优秀的Java技术公众号 无论开发还是运维,工作上都会遇到性能优化.高并发的问题,而Nginx是一个万能药,它可以在百万并发连接下实现高吞吐量的 We ...

  2. 前后端分离不可缺少的神器 NGINX

    样例讲解 1:安装工具包 wget.vim和gcc yum install -y wget yum install -y vim-enhanced yum install -y make cmake ...

  3. 神器 Nginx 的学习手册 ( 建议收藏 )

    关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ Nginx 是一个高性能的 HTTP 和反向代理服务器,特点是占用内存少,并发能力强,事实上 ...

  4. 为什么 Nginx 比 Apache 更厉害?

    关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ 为什么Nginx在处理高并发方面要优于httpd,我们先从两种web服务器的工作原理以及工作模 ...

  5. Qt on Android 核心编程

    Qt on Android 核心编程(最好看的Qt编程书!CSDN博主foruok倾力奉献!) 安晓辉 著   ISBN 978-7-121-24457-5 2015年1月出版 定价:65.00元 4 ...

  6. ASP.NET Core 介绍和项目解读

    标签: ASP.NETCore 1. 前言 2. ASP.NET Core 简介 2.1 什么是ASP.NET Core 2.2 ASP.NET Core的特点 2.3 ASP.NET Core 项目 ...

  7. NET Core 介绍

    NET Core 介绍 标签: ASP.NETCore 1. 前言 2. ASP.NET Core 简介 2.1 什么是ASP.NET Core 2.2 ASP.NET Core的特点 2.3 ASP ...

  8. 《Qt on Android核心编程》介绍

    <Qt on Android核心编程>最终尘埃落定.付梓印刷了. 2014-11-02更新:china-pub的预售链接出来了.折扣非常低哦. 封面 看看封面的效果吧,历经几版,最终就成了 ...

  9. flask项目部署到阿里云 ubuntu16.04

    title: flask项目部署到阿里云 ubuntu16.04 date: 2018.3.6 项目地址: 我的博客 部署思路参考: Flask Web开发>的个人部署版本,包含学习笔记. 开始 ...

随机推荐

  1. iOS开发--单例模式

    单例模式在iOS开发中可能算是最常用的模式之一了,但是由于oc本身的语言特性,想要写一个正确的单例模式相对来说比较麻烦,这里我就抛砖引玉来聊一聊iOS中单例模式的设计思路.关于单例模式更多的介绍请参考 ...

  2. Spring笔记——使用Spring进行面向切面(AOP)编程

    要进行AOP编程,首先我们要在spring的配置文件中引入aop命名空间: =================== Spring提供了两种切面声明方式,实际工作中我们可以选用其中一种: 1. 基于XM ...

  3. CentOS开机自动运行程序的脚本

    有些时候我们需要在服务器里设置一个脚本,让他一开机就自己启动.方法如下: cd /etc/init.dvi youshell.sh   #将youshell.sh修改为你自己的脚本名编写自己的脚本后保 ...

  4. Linux命令-cp

    cp命令用于复制文件到目录 参数 -r 递归持续复制(用于目录) 参数 -p 保留原始文件属性 参数 -d 若对象为链接文件,保留该链接文件的属性 参数 -a 相当于以上三者之和(-pdr) [roo ...

  5. Android AlarmManager类的应用(实现闹钟功能)

    1.AlarmManager,顾名思义,就是“提醒”,是Android中常用的一种系统级别的提示服务,可以实现从指定时间开始,以一个固定的间隔时间执行某项操作,所以常常与广播(Broadcast)连用 ...

  6. jdk、apache-ant结合yuicompressor配置的CSS与JS合并压缩工具

    前序:网上很多css与js合并打包工具,其中最流行的就是ant结合yui-compressor,鉴于学习与工作需要今天就学习了一下这种方式,供大家学习交流. 步骤:1.安装jdk,并配置其变量环境:有 ...

  7. opencv显示鼠标所在位置的rgb值

    #include"highgui.h" #include"cv.h" #include"cxcore.h" #include<stdl ...

  8. 对Java“一切皆对象”的理念的理解

    在从HelloWorld到面向对象中,我们将int, float, double, boolean等称为基本类型(primitive type),也就是特殊的类.我们可以将一个整数理解称为一个int类 ...

  9. BZOJ 1494 生成树计数(生成树计数-矩阵)

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1494 题意: 思路: int SIZE; struct matrix { i64 a[N] ...

  10. Flume学习 & Kafka & Storm 等 & Log4J 配置

    正在学习这篇文章: http://blog.csdn.net/ymh198816/article/details/51998085 和工作中接触的电商.订单.分析,可以结合起来. 开宗明义,这幅图片: ...