是否可以为 IIS7 导出 URL 重写规则?
我正在设置一个网站的副本供内部使用(测试),并希望复制所有 URL 重写规则而无需手动输入它们。
有一个导入选项,但没有明显的“导出”...
谢谢!
当我浏览到这个 URL 时:http://localhost:8080/foo/%5B-%5Dserver ( nc -l 8080) 按原样接收它:
GET /foo/%5B-%5D HTTP/1.1
Run Code Online (Sandbox Code Playgroud)
但是,当我通过 nginx (1.1.19) 代理此应用程序时:
location /foo {
proxy_pass http://localhost:8080/foo;
}
Run Code Online (Sandbox Code Playgroud)
通过 nginx 端口路由的相同请求转发路径解码:
GET /foo/[-] HTTP/1.1
Run Code Online (Sandbox Code Playgroud)
GET 路径中的解码方括号导致目标服务器中的错误(HTTP 状态 400 - 路径中的非法字符...),因为它们未转义到达。
有没有办法禁用 URL 解码或将其编码回来,以便目标服务器在通过 nginx 路由时获得完全相同的路径?一些巧妙的 URL 重写规则?
我有一个Apache web server提供静态 HTML 页面的工具。出于某种原因,我无法更改文件本身,但我仍然想将一些 HTML 注入到正在提供服务的每个页面中。
这可能mod_proxy吗?如果没有,有人可以推荐提供这种功能的软件吗?
编辑:我必须插入某种横幅广告(例如 a javascript)和跟踪像素。
我在一台 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"
Run Code Online (Sandbox Code Playgroud)
Barebones 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 $request_filename) {
expires 30d;
break;
}
# this sends all non-existing file or directory requests to …Run Code Online (Sandbox Code Playgroud) 我有一个这种类型的网址:
http://www.example.com/?param1=val1¶m2=¶m3=val3¶m4=val4¶m5=val5
Run Code Online (Sandbox Code Playgroud)
我想将它重定向到这个:
http://www.example.com/newparam/val3/val4
Run Code Online (Sandbox Code Playgroud)
所以我尝试了这个重写规则但没有成功:
rewrite "/?param1=val1¶m2=¶m3=(.+)¶m4=(.+)¶m5=(.+)" http://www.example.com/newparam/$1/$2 redirect;
Run Code Online (Sandbox Code Playgroud)
nginx 不能处理查询参数吗?
编辑:我不想重写所有请愿书。我只需要重写那个 URL,而不影响其他 URL。
我的代理服务器在 ip A 上运行,这就是人们访问我的 Web 服务的方式。nginx 配置将重定向到 ip B 上的虚拟机。
对于 IP A 上的代理服务器,我的站点中有此可用
server {
listen 443;
ssl on;
ssl_certificate nginx.pem;
ssl_certificate_key nginx.key;
client_max_body_size 200M;
server_name localhost 127.0.0.1;
server_name_in_redirect off;
location / {
proxy_pass http://10.10.0.59:80;
proxy_redirect http://10.10.0.59:80/ /;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 80;
rewrite ^(.*) https://$http_host$1 permanent;
server_name localhost 127.0.0.1;
server_name_in_redirect off;
location / {
proxy_pass http://10.10.0.59:80;
proxy_redirect http://10.10.0.59:80/ /;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; …Run Code Online (Sandbox Code Playgroud) 我只需要将http://shop.test.com重定向 到 http://www.test.com/fedex-orders/
就主页。没有其他的。即 http://shop.test.com/?page=blog不应重定向。
我的情况是让我们的营销部门有机会自己维护重定向。到现在为止,他们将信息传递给 IT 部门,我们在nginx.conf.
其中一些人非常熟悉 IIS 甚至 Apache 中的重定向,但无法让他们直接访问 nginx 配置。
我看到,.htaccess我可以访问的文件没有 nginx 支持,而且我也不想授予对 nginx 包含的 conf 文件的写访问权限。我希望,我们的营销将在数小时内破坏我们的 nginx 设置......
如果不让他们访问我们的负载均衡器的核心,是否有安全的可能性?
我试图让我的 nginx 重定向尽可能干净。我知道 ~* 不区分大小写,但我只能让它在示例 2 中工作。
示例 1
rewrite ^/foobar http://www.youtube.com/watch?v=oHg5SJYRHA0 redirect;
Run Code Online (Sandbox Code Playgroud)
示例 2 - 这有效,但不如上面的行有效。
if ( $request_filename ~* foobar ) {
rewrite ^ http://www.youtube.com/watch?v=oHg5SJYRHA0 redirect;
}
Run Code Online (Sandbox Code Playgroud)
有没有办法使用示例 1 进行不区分大小写的重定向而不会让它变得太混乱?
谢谢。
我想确保用户www.mydomain.com即使通过 alias 到达mydomain.com。这样我就可以控制子域上的 cookie,这样 Google 就会看到一个域,而不是一大堆 URL。
我怎样才能用 apache 做到这一点?