2015开篇——配置nginx URL有感

人总是习惯在懒散中拥抱自我。

每次遇到坑了,就巴望着留下点什么来记录一下,以前总是通过给代码增加注释来备忘。当然,博客是最好的记忆工具,没有之一。

这两天公司产品频繁新上线一些周边,需要通过配置URL来实现跳转到不同的周边页面。当然前置机还是Nginx,我喜欢它。

场景如下:

公网80端口通过NAT映射到内网某台机器的81端口,目前需要增加一个url(已使用这个url做好二维码已发放至外部),url为:http://www.domain.cn/web/test(结尾没有斜杠)。Nginx配置如下:

location /web/test/ {
    alias /www/download/app/;
    index index.html;
}

结果:

通过http://www.domain.cn/web/test/ 访问正常,跳转到预期的index.html页面

通过http://www.domain.cn/web/test 访问不正常,通过console,发现访问该url时,301至http://www.domain.cn:81/web/test,结果不出意外的是404。

开始以为是原业务系统已占用该URL,是否冲突导致。马上自己把自己否决了这个想法。

下载windows版本的Nginx,测试之,一切正常。思路转移到到这个81端口。为什么会跳转到81端口呢?

百思不得其解,曲线解决这个问题,从“/”的问题开始下手,为什么加斜杠就OK,不加斜杠就跳转到81端口。想通过Rewrite解决这个问题,增加配置如下:

location /web/test/ {
    if (-d $request_filename) {
        rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
    }
    alias /www/web/test/;
    index index.html;
}

问题照旧。

可否禁止Nginx默认的301呢?Google得到该结果:

port_in_redirect off;// 没找到如何禁止301,但找到了在301时不带端口进行301

reload,问题解决。

时间: 2024-10-11 01:23:19

2015开篇——配置nginx URL有感的相关文章

如何正确配置Nginx+PHP及正确的nginx URL重写

对很多人而言,配置Nginx+PHP无外乎就是搜索一篇教程,然后拷贝粘贴.听上去似乎也没什么问题,可惜实际上网络上很多资料本身年久失修,漏洞百出,如果大家不求甚解,一味的拷贝粘贴,早晚有一天会为此付出代价. 假设我们用PHP实现了一个前端控制器,或者直白点说就是统一入口:把PHP请求都发送到同一个文件上,然后在此文件里通过解析「REQUEST_URI」实现路由. 此时很多教程会教大家这样配置Nginx+PHP: server { listen 80; server_name foo.com; r

Nginx URL重写(rewrite)配置及信息详解

Nginx URL重写(rewrite)配置及信息详解 URL重写有利于网站首选域的确定,对于同一资源页面多条路径的301重定向有助于URL权重的集中 Nginx URL重写(rewrite)介绍 和apache等web服务软件一样,rewrite的组要功能是实现RUL地址的重定向.Nginx的rewrite功能需要PCRE软件的支持,即通过perl兼容正则表达式语句进行规则匹配的.默认参数编译nginx就会支持rewrite的模块,但是也必须要PCRE的支持 rewrite是实现URL重写的关

配置NGINX支持中文URL 中文文件名或目录404无法访问的解决方法

Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置.不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰到对方的.但是除非这两只青蛙在同一时间跳到同一点上,不然是永远都不可能碰面的.为了帮助这两只乐观的青蛙,你被要求写一个程序来判断这两只青蛙是否能够碰面,会在什么时候碰面. 我们把这

使用 javascript 配置 nginx

使用 javascript 配置 nginx 在上个月的 nginx.conf 2015 大会上, 官方宣布已经支持通过 javascript 代码来配置 nginx,并把这个实现称命名为——nginscript.使用 nginscript,可以很轻易得在 niginx 配置文件中通过 js 语法来实现自定义的服务器配置. 安装 # 下载最新版本的 nginx 并解压 curl -O http://nginx.org/download/nginx-1.9.5.tar.gz tar -xzvf n

macos10.9 配置nginx,php-fpm

参考文献: http://dhq.me/mac-apt-get-homebrew http://www.xiaoche.me/blog/2012/02/01/homebrew-install/ http://dhq.me/mac-install-nginx-mysql-php-fpm http://www.cnblogs.com/zhongyuan/p/3313106.html 1.安装homebrew ruby -e "$(curl -fsSL https://raw.github.com/H

搭建本地LNMP开发环境(6)-配置nginx和PHP

修改php的监听方式为监听端口 输入 vim /etc/php5/fpm/pool.d/www.conf 找到行 listen = /var/run/php5-fpm.sock 前面添加分号;注释掉这一行 然后在下面添加新行 listen = 127.0.0.1:9000 表示监听本机的9000端口 保存并退出编辑 输入 service php5-fpm restart 重启php5-fpm (php5-fpm是什么?管理php的东西,具体自己百度去) 配置nginx 输入 cd /etc/ng

LNMP1.3一键安装Linux环境,配置Nginx运行ThinkPHP3.2

LNMP1.3一键安装Linux环境,配置Nginx运行ThinkPHP3.2 你是否遇见过:安装LNMP1.3环境后,运行ThinkPHP 3.2,只能打开首页,不能访问控制器,报404错误. 按照以下3步设置,即可解决. ThinkPHP支持的URL模式有四种:普通模式.PATHINFO.REWRITE和兼容模式,系统默认的PATHINFO模式. LNMP1.3 一键安装完成后,默认支持REWRITE,需要手动开启 PATHINFO. 第1步修改:php.ini文件位置:/usr/local

6、CenOS 6.5系统下安装配置Nginx 1.2.4 + PHP 5.4.8 + MySQL 5.5.2

1. 修改 SSH 连接显示字符集 (可以忽略这一步,偶尔出现乱码影响也不大的) # vi /etc/profile 添加: LANG=zh_CN.GB2312 export LANG 使环境变量生效 保存后 断开 SSH 重新连接 # source /etc/profile 注意: 如果有添加这一步,在设置 mysql 密码时会出现个 sql 编码问题,需要注释掉这里的设置断开ssh后重连就可以了 2. 设置时区 # cp /usr/share/zoneinfo/Asia/Shanghai /

FreeBSD下配置Nginx+php+mysql高性能web服务器

概述: FreeBSD版本8.4 Nginx版本1.6 php版本5.4 mysql版本5.6 在配置之前要先更新系统,在root模式下输入如下命令查看pkg安装工具版本,如果版本低于1.4,那么需要更新才可使用: 配置环境的服务器要能上网,因为需要直接从官方资源站点下载配置包. #pkg info将看到如下信息,系统提示需要安装pkg工具:[email protected]:/usr/home/root001 # pkg infoThe package management tool is n