nginx详细应用
一、nginx的基本功能
基本Http服务,可以作为Http代理服务器和反向代理服务器,支持通过缓存加速访问,可以完成简单的负载均衡和容错,支持包过滤功能,支持SSL
高级Http服务,可以进行自定义配置,支持虚拟主机,支持URL重定向,支持网络监控,支持流媒体传输等
邮件代理服务器,支持IMAP/POP3代理服务功能,支持内部SMTP代理服务功能
二、nginx的具体应用
1、nginx的虚拟主机:经过对nginx配置文件的配置,生成虚拟主机;实现不同的域名访问不同的页面。
虚拟主机技术:主要应用与http服务;将一台服务器的某项或多个服务内容逻辑划分为多个服务单位,对外表现为多个服务器,从而可以充分利用服务器的硬件资源。具体配置如下
1)修改nginx配置文件
server {
listen 80;
server_name www.xniu.com;
location / {
root /www1;
index index.html;
}
server {
listen 80;
server_name www.linux.org;
location /{
root /www2;
index index.html;
}
}
2)在根目录下建立www1和www2目录,并编辑index.html默认发布文件。并启动nginx服务
3)在物理机中做解析。
---> vim /etc/hosts
server6 www.xniu.com www.linux.org
4)在真机中测试结果如下:
2、nginx实现https加密
1)编辑nginx配置文件
# HTTPS server
server {
listen 443 ssl;
server_name www.xniu.com;
ssl_certificate cert.pem; # 把认证的钥匙和密码设置相同
ssl_certificate_key cert.pem;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root /www1;
index index.html index.htm;
}
}
---> /usr/local/lnmp/nginx/sbin/nginx -t # 没有认证的锁和钥匙
2)生成锁和钥匙
---> cd /etc/pki/tls/certs
---> make cert.pem # 基本信息自己填写
---> mv cert.pem /usr/local/lnmp/nginx/conf/
3)重新加载nginx配置文件,就ok了。
4)在浏览器中进行测试
3、 重定向
3-1、将www.xniu.com和xniu.com重定向到https://www.xniu.com。nginx配置如下:(重定向到443)
server {
listen 80;
server_name www.xniu.com xniu.com;
rewrite ^/(.*)$ https://www.xniu.com/$1 permanent; # 使用通配符表示。permanent表永久生效
# $1表示,www.xniu.com/news会访问到https://www.xniu.com/news/index.html目录
# location / { # 由于进行域名的重定向,则它发布目录就可以注释另外
# root /www1;
# index index.html;
# }
3-2、将www.xniu.com重定向到bbs.xniu.com;即重定向到其他访问目录 。配置如下:
server {
listen 80;
server_name www.xniu.com xniu.com;
rewrite ^/bbs$ http://bbs.xniu.com; # 当访问www.xniu.com/bbs的时候,会重定向到bbs.xniu.com的默认发布目录
location / {
root /www1;
index index.html;
}
}
listen 80;
server_name bbs.xniu.com;
location /{
root /bbs;
index index.html;
}
在物理机中添加解析: 172.25.2.6 bbs.xniu.com;并在server6中创建bbs.xniu.com对应的发布目录和文件。最终结果为:
3-3、将www.xniu.com/bbs/index.html 重定向到 bbs.xniu.com/index.html
server {
listen 80;
server_name www.xniu.com xniu.com;
rewrite ^/bbs$ http://bbs.xniu.com; # 当以bbs结尾时,重定向到http://bbs.xniu.com
rewrite ^/bbs/(.*)$ http://bbs.xniu.com/$1; # 当为www.xniu.com/bbs/index.html会重定向到对应的index.html
location / {
root /www1;
index index.html;
}
}
3-4、反向重定向:当访问bbs.xniu.com的时候,重定向到https://www.xniu.com/bbs
server {
listen 80;
server_name www.xniu.com xniu.com;
#rewrite ^/bbs$ http://bbs.xniu.com;
#rewrite ^/bbs/(.*)$ http://bbs.xniu.com/$1;
#rewrite ^/(.*)$ https://bbs.xniu.com/$1 permanent;
location / {
root /www1;
index index.html;
}
server {
listen 80;
server_name bbs.xniu.com;
rewrite ^/(.*)$ https://www.xniu.com/bbs/$1; # 访问bbs.xniu.com转到https://www.xniu.com/bbs下
location /{
root /bbs;
index index.html;
}
}
4、限制客户的访问并发量和下载速率
1)限制客户端的并发数
#gzip on;
limit_conn_zone $binary_remote_addr zone=addr:10m;
location /download/ { # 在该目录下存放访问的图片
limit_conn addr 1; #设置并发量为1
}
#在html目录下建立download目录,并放置一张图片用来访问(注意图片的权限)。然后在物理机中模拟客户端的并发请求,结果如下:
---> ab -c1 -n 10 http://www.xniu.com/download/test.jpg # 发送10个请求,并发为1。(此时所有请求均正常接收)
# 在nginx的日志中查看访问记录。我们可以看到访问都是正常的,返回值为200.
---> tail -n 10 /usr/local/lnmp/nginx/logs/access.log
172.25.2.250 - - [05/Oct/2018:15:13:20 +0800] "GET /download/test.jpg HTTP/1.0" 127785 "-" "ApacheBench/2.3"
172.25.2.250 - - [05/Oct/2018:15:13:20 +0800] "GET /download/test.jpg HTTP/1.0" 127785 "-" "ApacheBench/2.3"
172.25.2.250 - - [05/Oct/2018:15:13:20 +0800] "GET /download/test.jpg HTTP/1.0" 127785 "-" "ApacheBench/2.3"
172.25.2.250 - - [05/Oct/2018:15:13:20 +0800] "GET /download/test.jpg HTTP/1.0" 127785 "-" "ApacheBench/2.3"
172.25.2.250 - - [05/Oct/2018:15:13:20 +0800] "GET /download/test.jpg HTTP/1.0" 127785 "-" "ApacheBench/2.3"
172.25.2.250 - - [05/Oct/2018:15:13:20 +0800] "GET /download/test.jpg HTTP/1.0" 127785 "-" "ApacheBench/2.3"
172.25.2.250 - - [05/Oct/2018:15:13:20 +0800] "GET /download/test.jpg HTTP/1.0" 127785 "-" "ApacheBench/2.3"
172.25.2.250 - - [05/Oct/2018:15:13:20 +0800] "GET /download/test.jpg HTTP/1.0" 127785 "-" "ApacheBench/2.3
如果并发量为大与1的时候,就会有1个错误请求。我们可以在日志在查看到十个请求只有一个被正常响应了。
---> ab -c10 -n 10 http://www.xniu.com/download/test.jpg
# 查看日志接收的情况:
---> tail -n 10 /usr/local/lnmp/nginx/logs/access.log
172.25.2.250 - - [05/Oct/2018:15:26:05 +0800] "GET /download/test.jpg HTTP/1.0" 537 "-" "ApacheBench/2.3"
172.25.2.250 - - [05/Oct/2018:15:26:05 +0800] "GET /download/test.jpg HTTP/1.0" 537 "-" "ApacheBench/2.3"
172.25.2.250 - - [05/Oct/2018:15:26:05 +0800] "GET /download/test.jpg HTTP/1.0" 127785 "-" "ApacheBench/2.3"
172.25.2.250 - - [05/Oct/2018:15:26:05 +0800] "GET /download/test.jpg HTTP/1.0" 537 "-" "ApacheBench/2.3"
172.25.2.250 - - [05/Oct/2018:15:26:05 +0800] "GET /download/test.jpg HTTP/1.0" 537 "-" "ApacheBench/2.3"
172.25.2.250 - - [05/Oct/2018:15:26:05 +0800] "GET /download/test.jpg HTTP/1.0" 537 "-" "ApacheBench/2.3"
172.25.2.250 - - [05/Oct/2018:15:26:05 +0800] "GET /download/test.jpg HTTP/1.0" 537 "-" "ApacheBench/2.3"
172.25.2.250 - - [05/Oct/2018:15:26:05 +0800] "GET /download/test.jpg HTTP/1.0" 537 "-" "ApacheBench/2.3"
172.25.2.250 - - [05/Oct/2018:15:26:05 +0800] "GET /download/test.jpg HTTP/1.0" 127785 "-" "ApacheBench/2.3"
2)限制客户端下载速率为50kb
#gzip on;
访问禁止情况:
2)允许特定网段的主机访问
location / {
allow 172.25.2.0/24; # 允许172.25.2.0网段访问
deny all;
root /www1;
index index.html;
}
# 此时172.25.2.1主机就可以访问了
3)当所有主机访问默认页面时,设置为500报错或进行重定向
server {
listen 80;
server_name _;
return 500; # 当其他主机访问,返回500错误
# rewrite ^(.*) http://www.westos.org permanent; # 重定向到其他站点
6、nginx中的乱码问题。(默认是不能识别汉语)
server {
listen 80;
server_name localhost;
charset utf-8; # 添加字符编码的格式: utf-8;
7、去掉没必要的日志
access_log off;
8、防盗链机制:在其他主机上访问server6中的文件
# 在一台含有apache的主机的默认发布目录下,添加如下内容
<html>
<body>
<img src="http://172.25.2.6/download/test.jpg"> # 通过server1访问server6中的图片
</body>
</html>
# 在server6中nginx的配置文件添加防盗链的访问权限
location ~ .*\.(gif|jpg|png)$ { # 格式为gif、jpg、png的访问的设定
expires 30d; # 图片缓存时间是30d
valid_referers none blocked www.xniu.com;
if ($invalid_referer) { # 表示除了www.xniu.com,其他访问均为403
return 403;
}
}
# 此时403在页面为图片的时候不会有提示;我们可以将显示页面进行重定向(实现人机交互),编辑ngxin配置文件:
location ~ .*\.(gif|jpg|png)$ {
expires 30d; # 图片缓存时间是30d
valid_referers none blocked www.xniu.com;
if ($invalid_referer) {
#return 403;
rewrite ^/ http://bbs.xniu.com/daolian.jpg; # 重定向到daolian.jpg
}
}
server {
listen 80;
server_name bbs.xniu.com;
#rewrite ^/(.*)$ https://www.xniu.com/bbs/$1;
location /{
root /www2; # 把防盗链图片放在/www2的目录下
index index.html;
}
}
nginx详细应用的更多相关文章
- CentOS7离线安装Nginx(详细安装过程)
CentOS7离线安装Nginx(详细安装过程) 1.安装gcc.g++ 下载好所需的文件后上传至服务器(下载地址:https://download.csdn.net/download/a729360 ...
- Nginx详细安装部署教程
一.Nginx简介 Nginx是一个web服务器也可以用来做负载均衡及反向代理使用,目前使用最多的就是负载均衡,具体简介我就不介绍了百度一下有很多,下面直接进入安装步骤 二.Nginx安装 1.下载N ...
- nginx 详细配置
Nginx全局变量 Nginx中有很多的全局变量,可以通过$变量名来使用.下面列举一些常用的全局变量: 变量 说明 boxClass 需要执行动画的元素的 变量 说明 $args 请求中的参数,如ww ...
- Ubuntu下安装Nginx详细步骤
Nginx安装之前需要三个支持: 模块依赖性 ①gzip 模块需要 zlib 库 ②rewrite 模块需要 pcre 库 ③ssl 功能需要 openssl 库 预先编译好的包: sudo apt- ...
- Nginx 详细安装部署教程
一.Nginx简介 Nginx是一个web服务器也可以用来做负载均衡及反向代理使用,目前使用最多的就是负载均衡,具体简介我就不介绍了百度一下有很多,下面直接进入安装步骤 二.Nginx安装 1.下载N ...
- wordpress nginx详细环境配置安装命令和相关问题解决
很详细的有关WordPress和nginx的环境配置安装操作步骤 指南,适合新手一步步按照命令操作安装WordPress并运行在生产环境中. 操作步骤转载自: Heap Stack blog(ping ...
- Nginx详细安装部署教程(转)
一.Nginx简介 Nginx是一个web服务器也可以用来做负载均衡及反向代理使用,目前使用最多的就是负载均衡,具体简介我就不介绍了百度一下有很多,下面直接进入安装步骤 二.Nginx安装 1.下载N ...
- spring4+websocket+nginx详细配置
实现的版本jdk1.7.0_25, tomcat7.0.47.0, Tengine/2.1.1 (nginx/1.6.2), servlet3.0, spring4.2.2 使用maven导入版本3. ...
- Linux下安装Nginx详细图解教程
什么是Nginx? Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器,在高连接并发的情况下N ...
- Nginx详细配置
#运行用户#user nobody; #启动进程,通常设置成和cpu的数量相等或者2倍于cpu的个数(具体结合cpu和内存).默认为1worker_processes 1; #全局的错误日志和日志 ...
随机推荐
- IOS #ifdef 的那些事儿
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/u012884714/article/details/25188685 格式有点乱,整了几次都整只是来 ...
- centos LAMP第一部分-环境搭建 Linux软件删除方式,mysql安装,apache,PHP,apache和php结合,phpinfo页面,ldd命令 第十九节课
centos LAMP第一部分-环境搭建 Linux软件删除方式,mysql安装,apache,PHP,apache和php结合,phpinfo页面,ldd命令 第十九节课 打命令之后可以输入: e ...
- Spring源码解析(五)循环依赖问题
引言 循环依赖就是多个类之间互相依赖,比如A依赖B,B也依赖A,如果日常开发中我们用new的方式创建对象,这种循环依赖就会导致不断的在创建对象,导致内存溢出. Spring是怎么解决循环依赖的问题的? ...
- PID参数调整的口诀
PID参数调整的口诀:参数整定找最佳,从小到大顺序查先是比例后积分,最后再把微分加曲线振荡很频繁,比例度盘要放大曲线漂浮绕大湾,比例度盘往小扳曲线偏离回复慢,积分时间往下降曲线波动周期长,积分时间再加 ...
- mysql删除匿名用户
首先使用命令进入数据库 [root@localhost raul]# mysql -u root -p Enter password: Welcome to the MySQL monitor. Co ...
- 120. Triangle(动态规划 三角形最小路径 难 想)
Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent n ...
- python webdriver 登录163邮箱发邮件加附件, 外加数据和程序分离,配置文件的方式
配置文件:UiObjectMapSendMap.ini用来存放配置信息 GetOptionSendMail.py 用来读取配信息 #encoding=utf-8from selenium.webdri ...
- javascript数组总结
数组是一个有序的集合,javascript数组中的元素的类型可以是任意的,同一个数组不同元素之间的类型也是可以不同的.数组也是对象,有个length属性,记录数组的长度. 创建数组有两种方法: 数组直 ...
- springboot+mybatis项目自动生成
springboot_data_access_demo基于rapid,根据自定义模版生成的基于mybatis+mysql的数据库访问示例项目.简单配置数据库信息,配置不同的生成策略生成可以直接运行访问 ...
- lombok常见注解
一.使用lombok简化代码 lombok提供了很多注解,在编译时候生成java代码,代替了手工编写一些简单的代码,使程序员可以关注更重要的实现. 二.常用注解 以model为例 public cla ...