一直听说过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. linux 操作系统下c语言编程入门

    2)Linux程序设计入门--进程介绍 3)Linux程序设计入门--文件操作 4)Linux程序设计入门--时间概念 5)Linux程序设计入门--信号处理 6)Linux程序设计入门--消息管理  ...

  2. 两则C++知识点

    返回引用遵守的两条准则: 1. 不能返回局部变量: 2. 不能返回new出的量,因为可能是临时对象. const的用法: 1. 基本数据类型的写限制: 2. 函数的传入以及返回参数: 3. 类内的数据 ...

  3. 【流媒体】 Android 实时视频编码—H.264硬编码

    [流媒體] Android 实时视频编码—H.264硬编码 SkySeraph Apr 4th 2012 Email:skyseraph00@163.com 1  硬编码 & 软编码 硬编码: ...

  4. JQUERY与JS的区别

    JQUERY与JS的区别 <style type="text/css"> #aa { width:200px; height:200px; } </style&g ...

  5. 【Cocos2d实例教程一】xcode5下Cocos2d环境的搭建

    (转载请注明出处:http://blog.csdn.net/buptgshengod) 第一步,现在要安装集成环境xcode5,安装xcode5需要系统至少是os x 10.8.5. 第二步,下载co ...

  6. Debugging JTAG Connectivity Problems

    2013-12-04 22:34:26 转自:http://processors.wiki.ti.com/index.php/Debugging_JTAG_Connectivity_Problems ...

  7. vmware 虚拟机 桥接 设置静态 IP

    最简单的方式: 图形界面下,进入设置IP的地方,设置一个静态IP. 然后再转入命令行继续工作.. 不行就 重启  

  8. Js判断一个单词是否有重复字母

    今天上午刷到一道题,大体是写一个方法判断一个单词中是否有重复的字母(或者说一个字符串中是否有重复的字符).我的思路是一个字符一个字符地遍历,如果发现有重复的停止: function isIsogram ...

  9. Oracle INV - SO line backorder API

    --Sales Order Lines to backorder API--===================================--SET serveroutput on size ...

  10. TCSRM5961000

    一直没想到怎么去重 看了眼别人的代码...so easy啊 同余啊 唉..脑子被僵尸吃掉了 难得1000出个简单的 #include <iostream> #include<cstd ...