Nginx配置虚拟机,url重写,防盗链
配置目录:
· 虚拟主机
· PHP支持
· URL重写
· 防止盗链
· 持续更新…
一、虚拟主机
1、创建
文件格式:{域名}.conf
具体如下:
$ sudo mkdir –pv /usr/local/nginx/conf/vhost
$ sudo touch /usr/local/nginx/conf/vhost/test1.cwteam.com.conf
$ sudo touch /usr/local/nginx/conf/vhost/test2.cwteam.com.conf
在这里按照格式创建两个虚拟主见的配置文件。另外,我们还需新建对应的虚拟主机服务的root位置:
$ sudo mkdir –pv /nginx/proxy/test1_cwteam_com
$ sudo mkdir –pv /nginx/proxy/test2_cwteam_com
2、配置
这里做简单配置,详细配置可参看nginx.conf配置,具体如下:
$ sudo vim/usr/local/nginx/conf/vhost/test1.cwteam.com.conf
server {
listen 8080;
server_name test1.cwteam.com;
index index.html index.htmindex.php;
root /nginx/proxy/test1_cwteam_com;
error_log off;
access_log off;
}
$ sudo vim /usr/local/nginx/conf/vhost/test2.cwteam.com.conf
server {
listen 8081;
server_name test2.cwteam.com;
index index.html index.htmindex.php;
root /nginx/proxy/test2_cwteam_com;
error_log off;
access_log off;
}
最后,我们在nginx.conf中的http{}内,server{}外引入虚拟机配置并重启nginx服务即可:
include vhost/*.conf;
注意:
别忘了在/etc/hosts中添加:
127.0.0.1 test1.cwteam.com
127.0.0.1 test2.cwteam.com
3、测试
为了测试方便,我们这里分别在test1_cwteam_com和test2_cwteam_com中放入对应的index.html文件,链接测试下两个虚拟主机:
$curl test1.cwteam.com:8080
$curl test2.cwteam.com:8081
好了,虚拟主机的配置已经好了,接下来在此基础上对配置下对PHP的支持。
二、PHP支持
1、添加配置
我们为上面的虚拟机test1添加对PHP支持,虚拟机配置:
server {
listen 8080;
server_name test1.cwteam.com;
index index.html index.htmindex.php;
root /nginx/proxy/test1_cwteam_com;
location ~ \.php {
#fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_intercept_errorson;
#设置PATH_INFO,注意fastcgi_split_path_info已经自动改写了fastcgi_script_name变量,
#后面不需要再改写SCRIPT_FILENAME,SCRIPT_NAME环境变量,所以必须在加载fastcgi.conf之前设置
fastcgi_split_path_info ^(.+\.php)(/.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
#加载Nginx默认"服务器环境变量"配置
include fastcgi.conf;
}
error_log off;
access_log off;
}
配置完成之后,重新加载nginx服务,使用nginx –t测试下配置是否正确。
2、测试虚拟
首先,在test1服务器服务的根目录下添加一个测试index.php文件,内容如下:
<?php
echo 'Hello Test1 You can supportthe PHP!';
?>
其次,在浏览器中输入http://test1.cwteam.com:8080/index.php 刷新,结果如下:
三、URL重写
Nginx的URL重写是基于Pcre规则,Perl负责兼容正则表达式的,如果需要开启Rewrite规则,需要先安装Pcre库。另外,使用Rewrite可以定制规范的URL及根据变量来做URL转向,具体如下:
1、安装pcre库
$ sudo brew install pcre
2、指令语句
Rewrite支持的指令集包括:
A、rewrite(重写指令)
语法规则:
~ 符号表示区分大小写字母匹配
~* 符号表示不区分大小写字母匹配
!~ 和 !~ 与~ !~ 相反
-f 和 !-f 用来判断文件是否存在
-d 和 !-d 用来判断目录是否存在
-e 和 !-e 用来判断文件或目录是否存在
-x 和 !-x 用来判断文件是否可以执行
支持$1到$9位置参数
变量名可以使用"="或"!="运算符
B、if(判断指令)
语法规则:
if (!-f$request_filename){
rewrite ^/test/(.*)$/site/$host/images/$1 last;
}
C、return(状态码返回指令)
语法规则:
if ($forbidden){
return 403;
}
D、示例
location / {
root/nginx/proxy/test2_cwteam_com;
index index.html index.php;
#AAA
if (-f$request_filename/index.html){
rewrite (.*) $1/index.htmlbreak;
}
if (-f$request_filename/index.php){
rewrite (.*) $1/index.php;
}
if (!-f $request_filename){
rewrite (.*) /index.php;
}
#BBB
rewrite ^/test2/(.*)$ /form/$1;
}
注:
#AAA部分判断如果访问的URL中含有index.html index.htm index.php的话,访问时可以不用补全index.*部分。
#BBB部分代表访问test2时,直接跳转到form下了。
四、防止盗链(图片)
location ~ .(jp?g|png|gif|bmp)$ {
valid_referers none blocked mysite.com *.mysite.com;
if ($invalid_referer) {
return 403;
}
}
注:
valid_referers-允许访问资源的网站列表,不在列表中请求的返回403;
none -匹配没有Referer的HTTP请求;
blocked -请求有Referer,但是被防火墙或者代理服务器修改,去掉https://或http://
*.domain.com -匹配mysite.com的所有二级域名;
location /images/ {
valid_referers none blocked mysite.com *.mysite.com;
if ($invalid_referer) {
return 403;
}
}
注:防止访问images下的所有文件
原博文地址:http://blog.csdn.net/why_2012_gogo/article/details/50967447
特别感谢原博主对本人学习带来的帮助。
Nginx配置虚拟机,url重写,防盗链的更多相关文章
- nginx 常用的 URL 重写方法
转自:http://www.jbxue.com/article/4727.html Nginx中一些常用的URL 重写方法介绍,有需要的朋友可以参考下.url重写应该不陌生,不管是SEO URL 伪静 ...
- nginx 配置支持URL HTML5 History 模式 与 设置代理
拾人牙慧:https://segmentfault.com/q/1010000007140360 nginx 配置支持URL HTML5 History 模式 location / { try_fil ...
- Nginx优化之日志优化,URL访问控制,防盗链,及站点文件目录优化
Nginx日志相关优化与安全 日志切割脚本如下: #!/bin #日志切割脚本 Date=`date +%Y%m%d` Bdir="/usr/local/nginx" Nginxl ...
- SpringBoot集成FastDFS+Nginx整合基于Token的防盗链
为什么要用SpringBoot? SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人 ...
- Nginx 十大优化 与 防盗链
Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器.Ngin ...
- nginx做反向代理并防盗链
nginx做反向代理真的非常简单,只需设置location+proxy_pass即可. 防盗链配置有些复杂,需要注意的地方: 在防盗链的location中需要再设置一下proxy_pass(在这里走了 ...
- Apache 和 Nginx 下的 URL 重写
URL 重写和重定向 URL 重写是将页面映射到本站另一页面, 而重定向则是将页面映射到另一主机(域名). 其中临时重定向(R=302)和永久重定向(R=301)都是亲搜索引擎的, 是 SEO 的重要 ...
- nginx配置 yii2 URL重写规则 SSI配置使shtml
location / { // 加上红色部分 重写url try_files $uri $uri/ /index.php?$args; if (!-e $request_filename){ rewr ...
- nginx跨站访问,防盗链
跨站访问 从网站A利用AJAX跨站访问网站B 浏览器会根据服务端返回的头部信息(Access-Control-Allow-Origin)判断是否允许跨域访问.如果服务端都允许跨站访问,浏览器段也就没必 ...
随机推荐
- (转)centos7.0安装配置DRBD
原文:http://gushiren.blog.51cto.com/3392832/1685207 首先确保两台机器时间同步,配置ssh. 方法一通过yum源安装:yum安装默认路径是/etc/drb ...
- BAE+Python+Django+Wechatpy+Baidu weather api +微信订阅号 = 实现微信查询天气
最近想在微信上面实现天气查询,分两个步骤: 1.被动回复:输入天气.xx天气获取天气情况 2.主动推送:每天定时推送天气(针对24小时内产生交互的人) 目前已经实现第一个步骤,如下: 现将实现此功能环 ...
- Robot Framework_Ride(Edit标签)
前言 RIDE 作为 Robot Framework 的“脸面”,虽然我们已经可以拿它来创建和运行测试了,但我们对它的认识并不全面,这一小节我们将了解这个工具的使用 Edit标签 下面我们来看一看测试 ...
- 【javascript/css】Javascript+Css实现图片滑动浏览效果
今天用js+css来做一个能够左右滑动的图片浏览效果. 首先写一个结构,包括需要浏览的两张图,以及能够点击来滑动图片的两个按钮. <!DOCTYPE html> <html> ...
- Microsoft Azure 配置负载均衡
负载均衡大家都知道是什么了吧,就不用介绍了.如何在 microsoft Azure 上配置了?创建两台虚拟机,并加入如云服务.然后在远处登录上去,有时你想在两台虚拟机上通信,怎么办,比如mymv2 p ...
- js&&jQuery实现省市区三级联动
代码参考了:https://codepen.io/anon/pen/WzyNQB;根据自己的需要修改了一下,挂个出处 1.前端页面代码 <html> <head> <me ...
- WPF 字体路径设置
以往在引用电脑里面没有的其它字体,都是需要把这个字体安装到自己电脑中, WPF程序中可以直接把字体文件拷到程序资源目录里面,这样就可以引用的到,不必要非安装这种字体; 下面总结了几种路径的具体方法,测 ...
- 什么是web service (转)
一.序言 大家或多或少都听过WebService(Web服务),有一段时间很多计算机期刊.书籍和网站都大肆的提及和宣传WebService技术,其中不乏很多吹嘘和做广告的成分.但是不得不承认的是Web ...
- CXF - JAX-WS入门
相关dependency,我使用的版本是2.7.11: <dependency> <groupId>org.apache.cxf</groupId> <art ...
- [android] 实现返回键操作思路
记录用户点击的操作历史,使用栈数据结构,频繁的操作栈顶(添加,获取,删除),使用LinkedList 捕获用户的返回键操作,响应返回键,返回上一个界面 MainActivity.java /** * ...