又一枚神器:nginx
一直听说过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
负载均衡
- http
- {
- upstream myserver {
- server 192.168.12.181:80 weight=3 max_fails=3 fail_timeout=20s;
- server 192.168.12.182:80 weight=1 max_fails=3 fail_timeout=20s;
- server 192.168.12.183:80 weight=4 max_fails=3 fail_timeout=20s;
- }
- server
- {
- listen 80;
- server_name www.domain.com 192.168.12.189;
- index index.htm index.html;
- root /ixdba/web/wwwroot;
- location / {
- proxy_pass http://myserver;
- proxy_next_upstream http_500 http_502 http_503 error timeout invalid_header;
- include /opt/nginx/conf/proxy.conf;
- }
- }
- }
虚拟主机
- http {
- server {
- listen 80;
- server_name www.domain1.com;
- access_log logs/domain1.access.log main;
- location / {
- index index.html;
- root /web/www/domain1.com/htdocs;
- }
- }
- server {
- listen 80;
- server_name www.domain2.com;
- access_log logs/domain2.access.log main;
- location / {
- index index.html;
- root /web/www/domain2.com/htdocs;
- }
- }
- include /opt/nginx/conf/vhosts/www.domain2.com.conf;
- }
- server {
- listen 80;
- server_name www.domain3.com;
- access_log logs/domain3.access.log main;
- location / {
- index index.html;
- root /web/www/domain3.com/htdocs;
- }
- }
反向代理,整合tomcat
- location / {
- proxy_pass http://localhost:8080;
- proxy_redirect off;
- proxy_set_header Host $host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forworded-For $proxy_add_x_forwarded_for;
- proxy_connect_timeout 90;
- proxy_send_timeout 90;
- proxy_read_timeout 90;
- proxy_buffer_size 4k;
- proxy_buffers 4 32k;
- proxy_busy_buffers_size 64k;
- proxy_temp_file_write_size 64k;
- }
反向代理,分离静态页面,并设置静态页面缓存时间(if-modify-since)
- location /img/ {
- alias /www/root/img/;
- expires 10d;
- }
设置Cache-Control
- add_header Cache-Control max-age=3600;
安全,防盗链
- location ~* \.(jpg|gif|png|swf|flv|wma|wmv|asf|mp3|mmf|zip|rar)$ {
- valid_referers none blocked *.ixdba1.net ixdba1.net;
- if ($invalid_referer) {
- rewrite ^/ http://www.ixdba.net/img/error.gif;
- #return 403;
- }
- }
- location /images {
- root /opt/nginx/html;
- valid_referers none blocked *.ixdba1.net ixdba1.net;
- if ($invalid_referer) {
- return 403;
- }
- }
安全,HTTPShttp://nginx.org/cn/docs/http/configuring_https_servers.html
又一枚神器:nginx的更多相关文章
- 高并发神器 Nginx,到底该怎么学?
Java技术栈 www.javastack.cn 优秀的Java技术公众号 无论开发还是运维,工作上都会遇到性能优化.高并发的问题,而Nginx是一个万能药,它可以在百万并发连接下实现高吞吐量的 We ...
- 前后端分离不可缺少的神器 NGINX
样例讲解 1:安装工具包 wget.vim和gcc yum install -y wget yum install -y vim-enhanced yum install -y make cmake ...
- 神器 Nginx 的学习手册 ( 建议收藏 )
关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ Nginx 是一个高性能的 HTTP 和反向代理服务器,特点是占用内存少,并发能力强,事实上 ...
- 为什么 Nginx 比 Apache 更厉害?
关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ 为什么Nginx在处理高并发方面要优于httpd,我们先从两种web服务器的工作原理以及工作模 ...
- Qt on Android 核心编程
Qt on Android 核心编程(最好看的Qt编程书!CSDN博主foruok倾力奉献!) 安晓辉 著 ISBN 978-7-121-24457-5 2015年1月出版 定价:65.00元 4 ...
- 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 项目 ...
- NET Core 介绍
NET Core 介绍 标签: ASP.NETCore 1. 前言 2. ASP.NET Core 简介 2.1 什么是ASP.NET Core 2.2 ASP.NET Core的特点 2.3 ASP ...
- 《Qt on Android核心编程》介绍
<Qt on Android核心编程>最终尘埃落定.付梓印刷了. 2014-11-02更新:china-pub的预售链接出来了.折扣非常低哦. 封面 看看封面的效果吧,历经几版,最终就成了 ...
- flask项目部署到阿里云 ubuntu16.04
title: flask项目部署到阿里云 ubuntu16.04 date: 2018.3.6 项目地址: 我的博客 部署思路参考: Flask Web开发>的个人部署版本,包含学习笔记. 开始 ...
随机推荐
- android-exploitme(一):生成apk
exploitme是一个国外的android安全测试环境,http://securitycompass.github.io/AndroidLabs/index.html,通过它可以学习一些基本的测试方 ...
- 自己写的中间层..基于通讯组件 RTC
273265088 我用原生Listbox与你的组件组合...创造了奇迹..搞了一个非常复杂的 UI .. 每个item高度 包括里面的元素 以及事件都是动态的搞了好几个小时感觉UI 非常完美比客户要 ...
- 我们为什么需要DTO(数据传输对象)
原文:http://www.cnblogs.com/Gyoung/archive/2013/03/23/2977233.html DTO即数据传输对象(Data Transfer Object).之前 ...
- swift:入门知识之控制流
1.swift语句中的控制流和其他语言大致相同,使用if和switch作为条件控制.使用 for-in.for.while.do-while作为循环. 2.区别之处:小括号不是必须的,但是主体的大括号 ...
- DWR与AJAX
DWR与AJAX的微妙关系 2015-08-14 10:20 447人阅读 评论(0) 收藏 举报 本文章已收录于: // ' + obj.name + " "; html ...
- Jquery中用offset().top和offsetTop的比较
今天,想测试一个div与顶部的距离,用的是.offsetTop,但是offsetTop获得的值,怎么都打印不出来.折腾了半天,打印的结果都是undefined,虽然网上很多资料都说返回的是数值.虽然这 ...
- 【Tech】Ganglia安装配置
基础配置: Hadoop 2.2.0,Hbase 0.96. 四台集群机器,一台master,三台slave. 三台slave上分别装gmond:namenode机器上设置datasource. 客户 ...
- MySQL —— 程序连接时的驱动名称和URL
CONNECTION_DRIVER : com.mysql.jdbc.Driver CONNECTION_URL : jdbc:mysql://localhost/DB_NAME
- 虚拟机 linux系统如何安装vmware Tools
1.打开VMware Workstation虚拟机,开启CentOS系统 虚拟机-安装VMware Tools 登录CentOS终端命令行 2.mkdir /media/mnt #新建挂载目录 ...
- 下拉刷新控件(5)SwipeRefreshLayout官方教程(下)响应刷新事件
http://developer.android.com/training/swipe/respond-refresh-request.html This lesson shows you how t ...