Questions tagged «rewrite»

URL重写将传入的URL映射到修改的URL,这样就可以像处理原始请求一样对请求进行处理。通常用于提供更多搜索引擎友好的URL。

4
通过代理,重写和保留URL进行Nginx重定向
在Nginx中,我们一直在尝试重定向URL,如下所示: http://example.com/some/path -> http://192.168.1.24 用户仍在浏览器中看到原始URL的位置。重定向用户后,说他们单击了的链接/section/index.html,我们希望它发出一个导致重定向的请求 http://example.com/some/path/section/index.html -> http://192.168.1.24/section/index.html 并仍然保留原始网址。 我们的尝试涉及使用代理和重写规则的各种解决方案,下面显示了使我们最接近解决方案的配置(请注意,这是Web服务器的Web服务器配置example.com)。但是,这仍然存在两个问题: 它无法正确执行重写,因为Web服务器收到的请求URL http://192.168.1.24包含了该URL /some/path,因此无法提供所需的页面。 网页投放后,当您将鼠标悬停在链接上时,/some/pathURL丢失 server { listen 80; server_name www.example.com; location /some/path/ { proxy_pass http://192.168.1.24; proxy_redirect http://www.example.com/some/path http://192.168.1.24; proxy_set_header Host $host; } location / { index index.html; root /var/www/example.com/htdocs; } } 我们正在寻找一种仅涉及更改上的Web服务器配置的解决方案example.com。我们可以更改192.168.1.24(也可以是Nginx)上的配置,但是我们想尝试避免这种情况,因为我们将需要对数百个通过访问进行代理的不同服务器重复此设置example.com。

7
删除“ www”并使用nginx重定向到“ https”
我想在nginx中创建一个做两件事的规则: 删除“ www”。从请求URI 如果请求URI为“ http”,则重定向到“ https” 有很多示例说明了如何分别执行这些操作,但我想不出一个可以同时正确完成这两个问题的解决方案(即,不会创建重定向循环并正确处理所有情况)。 它需要处理所有这些情况: 1. http://www.example.com/path 2. https://www.example.com/path 3. http://example.com/path 4. https://example.com/path 这些都应该以https://example.com/path(#4)结尾而不循环。有任何想法吗?
57 nginx  ssl  https  rewrite 

4
Nginx将一条路径重定向到另一条路径
我敢肯定这已经被问过了,但是我找不到可行的解决方案。 一个网站已切换了CMS服务,但具有相同的域,如何为单个页面设置nginx重写? 例如 旧页 http://sitedomain.co.uk/content/unique-page-name 新的一页 http://sitedomain.co.uk/new-name/unique-page-name 请注意,我不希望内容页面中的所有内容都被重定向,而实际上只是上面提到的url。我大约要设置9个重定向,但每个重定向都不适合某个模式。 谢谢! 编辑:我发现此解决方案似乎可行,除了它重定向时没有斜杠: if ( $request_filename ~ content/unique-page-name/ ) { rewrite ^ http://sitedomain.co.uk/new-name/unique-page-name/? permanent; } 但这重定向到: http://sitedomain.co.uknew-name/unique-page-name/
51 nginx  rewrite 

2
nginx url重写:break和last之间的区别
我不明白break和last(重写标志)之间的区别。该文档相当抽象。我已经尝试在某些配置中在两者之间切换,但是我没有发现任何行为上的差异。有人可以详细解释这些标志吗?最好使用在将一个标志翻转到另一个标志时显示不同行为的示例。
45 nginx  rewrite 


4
如何限制对目录和子目录的访问
我需要限制访问目录“ testdir”中的任何文件或子目录。我的conf: ... location ~* ^.+\.(jpg|txt)$ { root /var/www/site; } location /testdir { deny all; return 404; } ... 在我的配置中,我对/ testdir / jpg_or_txt-files没有任何限制。怎么做?
42 nginx  rewrite  deny 

3
Nginx变量$ host,$ http_host和$ server_name有什么区别?
是什么这三个变量的Nginx之间的差异$host,$http_host以及$server_name? 我有一个重写规则,在其中我不确定应该使用哪个规则: location = /vb/showthread.php { # /vb/showthread.php?50271-What-s-happening&p=846039 if ($arg_p) { return 301 $scheme://$host/forum/index.php?posts/$arg_p/; } 我在寻找一个答案,不仅要说“在重写规则中使用___变量”,还要说明它们之间的理论差异。
42 nginx  rewrite 


2
HAProxy reqrep删除后端请求上的URI
关于HAProxy reqrep的真正快速问题。我正在尝试重写/替换发送到后端的请求。 我有以下示例域和URI,它们共享相同的域名,但后端Web服务器池不同。 http://domain/web1 http://domain/web2 我希望将web1转到后端webfarm1,并将web2转到webfarm2。目前确实如此。但是,当请求发送到后端时,我想剥离web1或web2 URI。 这是我的haproxy.cfg frontend webVIP_80 mode http bind :80 #acl routing to backend acl web1_path path_beg /web1 acl web2_path path_beg /web2 #which backend use_backend webfarm1 if web1_path use_backend webfarm2 if web2_path default_backend webfarm1 backend webfarm1 mode http reqrep ^([^\ ]*)\ /web1/(.*) \1\ /\2 balance roundrobin …

3
如何在Nginx反向代理中重写Set-Cookie的域部分?
此问题已从堆栈溢出迁移,因为可以在服务器故障时回答。 迁移 8年前。 我有一个简单的nginx反向代理: server { server_name external.domain.com; location / { proxy_pass http://backend.int/; } } 问题在于Set-Cookie响应头包含;Domain=backend.int,因为后端不知道它是否被反向代理。 如何使nginx重写Set-Cookie响应标头的内容,替换;Domain=backend.int为;Domain=external.domain.com? 路过Host头不变的是不会在这种情况下的一个选项。 Apache httpd拥有此功能已有一段时间了,请参阅参考资料ProxyPassReverseCookieDomain,但是我似乎找不到在nginx中实现此功能的方法。

10
如何在每个交付的HTML页面中注入HTML代码?
我有Apache web server提供静态HTML页面的。由于某些原因,我无法更改文件本身,但是我仍然想在正在提供的每个页面中注入一些HTML。 这可能mod_proxy吗?如果没有,谁能推荐具有这种功能的软件? 编辑:我必须插入某种横幅广告(例如javascript)和一个跟踪像素。

2
在Nginx代理中禁用URL解码
当我浏览到该URL时:http://localhost:8080/foo/%5B-%5D服务器(nc -l 8080)照原样接收它: GET /foo/%5B-%5D HTTP/1.1 但是,当我通过nginx(1.1.19)代理此应用程序时: location /foo { proxy_pass http://localhost:8080/foo; } 通过nginx端口路由的相同请求将通过解码的路径转发: GET /foo/[-] HTTP/1.1 GET路径中已解码的方括号会导致目标服务器中的错误(HTTP状态400-路径中的非法字符...)在未转义的情况下到达。 有没有一种方法可以禁用URL解码或对其进行编码,以便目标服务器通过nginx路由时获得完全相同的路径?一些聪明的URL重写规则?
21 nginx  rewrite  url 


4
nginx + PHP-FPM = nginx日志中的“权限被拒绝”错误13;配置错误?
我已经在一台RHEL5服务器上在PHP 5.2.10下运行nginx 0.7x + PHP-FPM,但是试图在第二台服务器上在PHP 5.3.3的捆绑式PHP-FPM下复制该设置,每次有GET时都会出现权限错误。 FPM已启动,并确认fastcgi在9000上进行侦听,但是每次执行GET时,我都会在nginx日志中看到此错误: 2010/08/12 23:38:53 [crit] 5019#0: *5 stat() "/home/noisepages/www/" failed (13: Permission denied), client: 24.215.173.141, server: dev.noisepages.com, request: "GET / HTTP/1.1", host: "dev.noisepages.com" 准系统nginx.conf.default至少可以运行。这是我的nginx.conf server { listen 80; server_name dev.noisepages.com; root /home/noisepages/www; index index.html index.htm index.php; access_log logs/dev.access.log; error_log logs/dev.error.log; location / { if (-f …


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.