nginx配置学习总结
1.nginx反向代理
在讲诉具体的配置之前,先说下正向代理与反向代理的区别。
正向代理:是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理,而且必须要进行一些特别的设置才能使用正向代理。。正向代理是一种最终用户知道并主动使用的代理方式。
正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径。正向代理还可以使用缓冲特性减少网络使用率。正向代理允许客户端通过它访问任意网站并且隐藏客户端自身,因此你必须采取安全措施以确保仅为经过授权的客户端提供服务。
反向代理:是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。反向代理对用户来说是透明的,用户是感知不到的。
反向代理的典型用途是将防火墙后面的服务器提供给Internet用户访问。反向代理还可以为后端的多台服务器提供负载平衡,或为后端较慢的服务器提供缓冲服务。
修改配置文件
/usr/local/nginx/conf/nginx.conf
user www www;
worker_processes 1;
error_log logs/error.log;
pid logs/nginx.pid;
worker_rlimit_nofile 65535;
events {
use epoll;
worker_connections 65535;
}
http {
include mime.types;
default_type application/octet-stream;
include /usr/local/nginx/conf/vhosts/proxy.conf;
sendfile on;
keepalive_timeout 65;
gzip on;
client_max_body_size 50m; #缓冲区代理缓冲用户端请求的最大字节数,可以理解为保存到本地再传给用户
client_body_buffer_size 256k;
client_header_timeout 3m;
client_body_timeout 3m;
send_timeout 3m;
proxy_connect_timeout 300s; #nginx跟后端服务器连接超时时间(代理连接超时)
proxy_read_timeout 300s; #连接成功后,后端服务器响应时间(代理接收超时)
proxy_send_timeout 300s;
proxy_buffer_size 64k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小
proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)
proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传递请求,而不缓冲到磁盘
proxy_ignore_client_abort on; #不允许代理端主动关闭连接
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
编辑反向代理服务器配置文件:
/usr/local/nginx/conf/vhosts/proxy.conf
server
{
listen 80;
server_name jerishi1.com;
location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://192.168.10.38:3000;
}
access_log logs/jerishi1.com_access.log;
}
server
{
listen 80;
server_name jerishi2.com;
location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://192.168.10.40:80;
}
access_log logs/jerishi2.com_access.log;
}
负载均衡设置
upstream monitor_server {
server 192.168.0.1:80;
server 192.168.0.2:80;
}
server
{
listen 80;
server_name nagios.xxx123.tk;
location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://monitor_server;
}
access_log logs/nagios.jerishi.com_access.log;
}
2.ngnix重启
检查配置
$:/usr/local/nginx-1.5.1/sbin/nginx -t
重启nginx
$:/usr/local/nginx-1.5.1/sbin/nginx -s reload
关闭nginx
$:/usr/local/nginx-1.5.1/sbin/nginx -s stop
3.Location处理逻辑
location匹配命令
- ~ #波浪线表示执行一个正则匹配,区分大小写
- ~* #表示执行一个正则匹配,不区分大小写
- ^~ #^~表示普通字符匹配,如果该选项匹配,只匹配该选项,不匹配别的选项,一般用来匹配目录
- = #进行普通字符精确匹配
- @ #”@” 定义一个命名的 location,使用在内部定向时,例如 error_page, try_files
代码示例:
location = / {
# 只匹配"/".
[ configuration A ]
}
location / {
# 匹配任何请求,因为所有请求都是以"/"开始
# 但是更长字符匹配或者正则表达式匹配会优先匹配
[ configuration B ]
}
location ^~ /images/ {
# 匹配任何以 /images/ 开始的请求,并停止匹配 其它location
[ configuration C ]
}
location ~* .(gif|jpg|jpeg)$ {
# 匹配以 gif, jpg, or jpeg结尾的请求.
# 但是所有 /images/ 目录的请求将由 [Configuration C]处理.
[ configuration D ]
}
匹配流程:
1. 用uri测试所有的prefix string;
2. Uri精确匹配到=定义的loacation,使用这个location,停止搜索;
3. 匹配最长prefix string,如果这个最长prefix string带有^~修饰符,使用这个location,停止搜索,否则:
4. 存储这个最长匹配;
5. 然后匹配正则表达;
6. 匹配到第一条正则表达式,使用这个location,停止搜索;
7. 没有匹配到正则表达式,使用#4步存储的prefix string的location。
4.nginx root&alias比较
root
语法:root path
默认值:root html
配置段:http、server、location、if
root会根据完整的URI请求来映射,也就是/path/uri.
示例:
location ~ ^/qcloud/ {
root /data/release/www.qcloud.com;
autoindex on;
auth_basic "Restricted";
auth_basic_user_file passwd/weblogs;
}
如果一个请求的URI是/qcloud/www.buy.qcloud.com/main.js时,web服务器将会返回/data/release/www.qcloud.com/qcloud/www.buy.qcloud.com/main.js的文件。
alias
语法:alias path
配置段:location
alias会把location后面配置的路径丢弃掉,把当前匹配到的目录指向到指定的目录。
示例:
location ~ ^/qcloud/ {
alias /data/release/www.qcloud.com;
autoindex on;
auth_basic "Restricted";
auth_basic_user_file passwd/weblogs;
}
如果一个请求的URI是/qcloud/www.buy.qcloud.com/user.js时,web服务器将会返回/data/release/www.qcloud.com/www.buy.qcloud.com/main.js的文件。
nginx配置学习总结的更多相关文章
- nginx配置学习文章
partOne 自我释义部分 我的是阿里云的ubuntu *******实际上感觉这里是基本配置,很用不到*********#定义其用户或用户组user www-data;#nginx的进程数,应当为 ...
- Nginx 配置学习
官方文档 一.概述 Nginx的配置放在配置文件nginx.conf/etc/nginx/nginx.conf中,大概的结构如下: main # 全局配置 events { # nginx工作模式配置 ...
- Laravel 5.5 官方推荐 Nginx 配置学习
Laravel 5.5 版本官方放出了 Nginx 服务器的配置,中文文档:服务器配置 Nginx server { listen 80; server_name example.com; root ...
- nginx配置反向代理或跳转出现400问题处理记录
午休完上班后,同事说测试站点访问接口出现400 Bad Request Request Header Or Cookie Too Large提示,心想还好是测试服务器出现问题,影响不大,不过也赶紧上 ...
- Windows下Nginx配置SSL实现Https访问(包含证书生成)
Vincent.李 Windows下Nginx配置SSL实现Https访问(包含证书生成) Windows下Nginx配置SSL实现Https访问(包含证书生成) 首先要说明为什么要实现https ...
- Nginx配置详解
序言 Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的.从2004年发布至今,凭借开源的力量,已经接近成熟与完善. Nginx功能丰富,可作为HTTP服务器,也 ...
- Nginx 配置从零开始
作为一个 nginx 的初学者记录一下从零起步的点滴. 基本概念 Nginx 最常的用途是提供反向代理服务,那么什么反向代理呢?正向代理相信很多大陆同胞都在这片神奇的土地上用过了,原理大致如下图: 代 ...
- 【nginx配置】nginx做非80端口转发
一个场景 最近在使用PHP重写一个使用JAVA写的项目,因为需要查看之前的项目,所以要在本地搭建一个Tomcat来跑JAVA的项目.搭建成功后,因为Tomcat监听的端口是8080,因此,访问的URL ...
- Nginx 配置指令location 匹配符优先级和安全问题【转】
Nginx配置指令location匹配符优先级和安全问题 使用nginx 很久了,它的性能高,稳定性表现也很好,得到了很多人的认可.特别是它的配置,有点像写程序一样,每行命令结尾一个";&q ...
随机推荐
- System.Runtime.InteropServices.COMException:“服务器出现意外情况。 (异常来自
.Net MVC导出Excel的时候,一直报错,如题.原因是因为福昕阅读器,这样设置 execl->点击文件>选项>加载项,选择com加载项,把祈福阅读器勾掉.
- 学习windows编程 day3 之滚动条完善
1.不再使用setscrollrange,setscrollpos,getscrollrange,getscrollpos这些函数,这只是有助于理解其中运行原理 2.改用setscrollinfo,g ...
- #define宏定义中## #@ # \ 符号使用
C/C++ 宏命令的神奇用法. 先看下面三条语句: #define Conn(x,y) x##y#define ToChar(x) #@x#define ToString(x) ...
- Hbase记录-ZooKeeper介绍
ZooKeeper是一个分布式协调服务来管理大量的主机.协调和管理在分布式环境的一个服务是一个复杂的过程.ZooKeeper 简单解决了其结构和API这个问题.ZooKeeper允许开发人员能够专注于 ...
- JAVA记录-redis缓存机制介绍(一)
1.redis介绍 Redis 简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品有以下三个特点: Re ...
- 【BZOJ2749】【HAOI2012】外星人[欧拉函数]
外星人 Time Limit: 3 Sec Memory Limit: 128 MB[Submit][Status][Discuss] Description Input Output 输出te ...
- Java——关于num++和++num
public class num_add_add { public static void numAdd(){ int num = 10; int a = num++; System.out.prin ...
- pyqt5-键盘事件
视频教程:https://v.qq.com/x/page/p08592bhsag.html keyPressEvent(QKeyEvent) 键盘按下时调用 keyReleaseEvent(QK ...
- JavaScript之获取表格目标数据(TableDom.getTableData())
[声明: 1.博文原创 未经同意转载必究,欢迎相互交流] [声明: 2.博主未知情况下转载,需显著处注明博文来源] [声明: 3.谢谢尊重劳动成果,谢谢理解与配合~] 一.背景 在生产过程和生活 ...
- CSS —— 选择器
选择器种类 标签选择器 id选择器 类选择器 通配符 交集选择器 并集选择器 后代选择器 子代选择器 选择器设置样式优先级 默认样式 < 继承样式 < 通配符设置样式 < 标签选择器 ...