Nginx配置虚拟机,url重写,防盗链

时间:2022-09-09 17:01:50

配置目录:

·     虚拟主机

·     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

Nginx配置虚拟机,url重写,防盗链

$curl test2.cwteam.com:8081

Nginx配置虚拟机,url重写,防盗链

好了,虚拟主机的配置已经好了,接下来在此基础上对配置下对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 刷新,结果如下:

Nginx配置虚拟机,url重写,防盗链

三、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重写,防盗链的更多相关文章

  1. nginx 常用的 URL 重写方法

    转自:http://www.jbxue.com/article/4727.html Nginx中一些常用的URL 重写方法介绍,有需要的朋友可以参考下.url重写应该不陌生,不管是SEO URL 伪静 ...

  2. nginx 配置支持URL HTML5 History 模式 与 设置代理

    拾人牙慧:https://segmentfault.com/q/1010000007140360 nginx 配置支持URL HTML5 History 模式 location / { try_fil ...

  3. Nginx优化之日志优化&comma;URL访问控制&comma;防盗链&comma;及站点文件目录优化

    Nginx日志相关优化与安全 日志切割脚本如下: #!/bin #日志切割脚本 Date=`date +%Y%m%d` Bdir="/usr/local/nginx" Nginxl ...

  4. SpringBoot集成FastDFS&plus;Nginx整合基于Token的防盗链

    为什么要用SpringBoot? SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人 ...

  5. Nginx 十大优化 与 防盗链

    Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器.Ngin ...

  6. nginx做反向代理并防盗链

    nginx做反向代理真的非常简单,只需设置location+proxy_pass即可. 防盗链配置有些复杂,需要注意的地方: 在防盗链的location中需要再设置一下proxy_pass(在这里走了 ...

  7. Apache 和 Nginx 下的 URL 重写

    URL 重写和重定向 URL 重写是将页面映射到本站另一页面, 而重定向则是将页面映射到另一主机(域名). 其中临时重定向(R=302)和永久重定向(R=301)都是亲搜索引擎的, 是 SEO 的重要 ...

  8. nginx配置 yii2 URL重写规则 SSI配置使shtml

    location / { // 加上红色部分 重写url try_files $uri $uri/ /index.php?$args; if (!-e $request_filename){ rewr ...

  9. nginx跨站访问,防盗链

    跨站访问 从网站A利用AJAX跨站访问网站B 浏览器会根据服务端返回的头部信息(Access-Control-Allow-Origin)判断是否允许跨域访问.如果服务端都允许跨站访问,浏览器段也就没必 ...

随机推荐

  1. 玩蛇记--Python处理海量手机号码

    一.任务描述 上周,老板给我一个小任务:批量生成手机号码并去重.给了我一个Excel表,里面是中国移动各个地区的可用手机号码前7位(如下图),里面有十三张表,每个表里的电话号码前缀估计大概是八千个,需 ...

  2. Redis学习笔记7--Redis管道(pipeline)

    redis是一个cs模式的tcp server,使用和http类似的请求响应协议.一个client可以通过一个socket连接发起多个请求命令.每个请求命令发出后client通常会阻塞并等待redis ...

  3. 易语言5&period;6 精简破解版&lbrack;Ctoo&rsqb;

    说明:本易语言5.6破解版 加入了[E剑终情]大神制作的完美通杀补丁,本人还修复了静态编译的问题. 关于静态编译失效的问题,大家解压之后会看到易语言根目录有一个"易言语静态编译配置工具&qu ...

  4. service postgresql initdb &lbrack;FAILED&rsqb;

    一.场景 安装postgresql时可能因为配置有问题[后来定位问题是我把pg_hba.conf中local一栏的ident修改为peer就会出错]导致服务起不来,报错如下: [root@localh ...

  5. 一行代码从表中选取N行到另一个表

    private void Form1_Load(object sender, EventArgs e) {            DataTable dt = new DataTable();     ...

  6. PHP中常量

    PHP中常量 常量就是一种特殊的变量,PHP中的常量值一旦定义,在程序运行过程中不可更改,常量本身也不允许删除. 程序是用于解决现实问题,由两部分组成:代码,数据 常量的定义: 语法1: define ...

  7. bzoj2565

    网络流就先告一段落了 在进行其他训练之前,我决定先练一道后缀数组(对这个我还是比较有自信的) 虽然之前没用后缀数组解决过回文问题,但是稍微想想就知道, 要解决最长双倍回文,首先要解决最长回文序列, 要 ...

  8. java中队列Queue的使用

    1.在java5中新增加了java.util.Queue接口,用以支持队列的常见操作.Queue接口与List.Set同一级别,都是继承了Collection接口.Queue使用时要尽量避免Colle ...

  9. C&num;代码总结01---如何清空页面上所有文本框的内容。(用于录入后的清空)

    /// <summary> /// 清空页面上所有TextBox的内容.用于录入后的清空 /// </summary> /// <param name="top ...

  10. HDU 5977 Garden of Eden (树形dp&plus;快速沃尔什变换FWT)

    CGZ大佬提醒我,我要是再不更博客可就连一月一更的频率也没有了... emmm,正好做了一道有点意思的题,就拿出来充数吧=.= 题意 一棵树,有 $ n (n\leq50000) $ 个节点,每个点都 ...