Articles of 重写

隐藏url中的nginx根目录

我build立了一个Ubuntu VPS,使用LAMP和nginx。 我可以打开页面的属性,但是当我尝试根url时,nginx将根path添加到url。 例如,我的根位置设置为/ var / www / web /,并且我有这个结构 /web index.php (main site) –/site2 –/site3 当我键入www.servername.com/site2或/ site3时,它可以正常工作,但是当我inputwww.servername.com时,在www.servername.com/var/www/web/中显示该站点。 最奇怪的是,当我打开一个简单的HTML文件,它可以打开正确的www.servername.com/filename.html 这是我的nginx默认文件。 server { listen 80 default_server; listen [::]:80 default_server; root /var/www/web; index index.php; server_name www.servername.com; location / { try_files $uri $uri/ /index.php$is_args$args; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_intercept_errors on; fastcgi_pass unix:/run/php/php7.0-fpm.sock; } }

nginx重写整个request_uri

我知道有很多这样的例子,但我只是想确定。 不幸的是我不能在接下来的几天内testing这个,所以我在这里问。 什么是这个位置的重写相当于? location ~* /v1/device/(.*)/ { proxy_pass http://api.domain.com/api/v1.0/download/$1; } 我想基本上重写整个传入的请求,除了regex的部分。 我认为这是但我不确定: location ~* /v1/device/(.*)/ { rewrite ^/v1/device/(.*)/ /api/v1.0/download/$1 break; proxy_pass http://api.domain.com; } 想知道是否有更干净的方式,而我不必在重写规则中重复/ v1 / device /。 谢谢

nginx位置服务多个端点

我需要这个位置块路由到两个不同的后端端点 location ~* /zones/ 它必须具有使这些重写成功的逻辑: /zones/appinfo.axd >>> /zones/appinfo.axd /zones/api/v2/zones >>> /api/v2/zones 这是我目前的: location ~* /zones/ { proxy_set_header Host $http_host; proxy_set_header Connection ""; rewrite ^ /api/v2/zones break; proxy_pass http://zone_api; } 但是它只能用于第二次重写

对于POST请求,IIS ARR返回502,但对GET很好

概要 我正在使用ARR进行虚拟应用程序的零宕机蓝/绿部署。 GET请求正常工作,但通过ARR发送到虚拟应用程序中运行的ASP.NET站点的POST请求会在ARR中指定的超时后返回502.3错误。 失败请求跟踪显示BytesReceived =“0”,就好像POST请求丢失一样。 如果直接向ARR后面的站点发送POST请求,则工作正常。 build立 我已经设置了应用程序请求路由(ARR),作为同一服务器上的两个网站的反向代理,一次只有其中一个网站标记为“健康”。 这是为了实现零宕机ASP.NET部署,所以可以在发送stream量之前预热站点。 我们的Web应用程序由两个代码库组成,其中一个作为根网站,另一个作为/app/的虚拟应用/app/ 。 因此请求subdomain.myurl.com/app/whatever去虚拟应用程序。 这只是我希望使用ARR的第二个代码库。 WEB – > subdomain.myurl.com/app/ – >服务器场 – > SiteA/app/ 或 SiteB/app/ 服务器上有一个URL重写规则,它将任何具有特定子域和path/应用*的请求redirect到Web场。 SiteA和SiteB被设置为每个都有一个虚拟的应用程序也使用path /app/ 。 问题 GET subdomain.myurl.com/app/返回带有login表单的页面。 带有填写表单字段的POST请求subdomain.myurl.com/app/在服务器场代理设置中指定的超时后导致502错误。 我可以断言,应用程序不会超时 – 在将相同的请求直接发送到站点而不是通过ARR返回200ms内。 失败的请求追踪 对于在服务器场代理超时(已尝试30,60和300秒)中设置的值, GENERAL_READ_ENTITY_START和GENERAL_READ_ENTITY_END之间的时间戳之间存在差距。 这是输出: NOTIFY_MODULE_START – ModuleName="ManagedPipelineHandler", Notification="EXECUTE_REQUEST_HANDLER", fIsPostNotification="false" GENERAL_READ_ENTITY_START 代理超时的时间戳延迟 GENERAL_READ_ENTITY_END , BytesReceived="0", ErrorCode="The I/O operation has been aborted […]

无法将https://example.comredirect到nginx服务器上的https://www.example.com

我对这件事很感兴趣,因此我要求你们在这件事上和我一起袒护。 相信我,我通常不会发问,直到我真正花了几个小时在一个问题上没有任何结果。 请原谅,如果我不熟悉服务器术语。 我会尽我所能来解释手头的情况。 所以这是事情。 我从一个nginx服务器为我的网站提供服务,并在服务器上安装了letsencrypt ssl证书。 我也在网上研究如何使redirect工作,因为我只希望https://www.example.com出现以下条目: www.example.com example.com http://example.com http://www.example.com https://example.com 它redirect了前4个,但不是最后一个,我不明白为什么。 它只是显示为https://example.com 这是我在过去几个小时一直在讨论的文件。 我在这里和那里改变了一些代码来获得我现在所处的状态(这比之前我认为的要好)。 所以如果你认为有些事情是closures的,那很可能是,我正在寻找正确的解决scheme。 [/etc/nginx/sites-enabled/example.com] server { server_name example.com; return 301 $scheme://www.example.com$request_uri; } server { listen 80 default_server; listen [::]:80 default_server; # SSL configuration # listen 443 ssl default_server; listen [::]:443 ssl default_server; # # Note: You should disable gzip for […]

用htaccess从文件夹加载子域名

我有一个项目设置,我有多个子域名,用于不同的目的,如login.example.com , signup.example.com和blog.example.com 。 我只有configuration的域,但没有创build任何子域。 所有子域都应该从根文件夹中的相应文件夹加载,例如example.com正在从根文件夹文件运行,并且还有3个文件夹用于login , signup和blog 。 我已经在.htaccess文件中写入此代码来从文件夹加载子域 RewriteEngine on RewriteCond %{HTTP_HOST} ^login.example.com RewriteRule ^(.*)$ http://example.com/login/$1 [L,NC,QSA] 但它不工作,给我一个500错误。 我该怎么做?

nginxconfiguration – redirect,如果文件存在

我正在将一个由别人写的php应用程序从apache转换到nginx。 开发人员在.htaccess中有这个 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-s RewriteRule ^(.*)$ api.php?rquest=$1 [QSA,NC,L] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^(.*)$ api.php [QSA,NC,L] RewriteCond %{REQUEST_FILENAME} -s RewriteRule ^(.*)$ api.php [QSA,NC,L] </IfModule> 我简单地读了这个 “如果文件/目录不存在,请将请求重写为api.php?rquest = $ uri” “如果文件/目录确实存在,请将该请求重写为api.php” 我试图在nginx中复制这个,但遇到问题。 我创build了一个位置指令 location / { # if the file or folder doesn't exist add it as arguments to […]

在IIS 10上安装后URL重写不可用

我似乎无法find任何关于这个在线。 我已经在运行IIS 10的Windows 10上通过Web平台安装程序 安装了URL Rewrite , 重新启动了IISpipe理器 , 重新启动了IIS服务器 ,并且重新启动了我的机器,但是在Site – > IIS类别下,URL重写选项仍然不可用 。 我还发现一个post说如果rewrite.dll在C:\Windows\System32\inetsrv下是可用的。 我也尝试重新安装它,但似乎无法find卸载的方法。 任何想法,为什么这发生在我身上?

redirect到本地主机:8080?

我有一个Jenkins安装,可以作为本地主机:8080访问,或者如果作为[网站IP地址]访问外部:8080 我想做一些像[网站IP地址] /jenkins而不是IIS知道redirect到本地:8080内部访问时,像这样。 这是我的web.config文件: <?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="ReverseProxyInboundRule1" stopProcessing="true"> <match url="(jenkins.*)" /> <action type="Rewrite" url="http://localhost:8080/{R:1}" /> </rule> </rules> </rewrite> </system.webServer> </configuration> 不幸的是,当我试图访问[我的IP地址] / jenkins我得到一个404 …

Nginx将urlredirect到html文件并追加空参数

我需要将请求的urlredirect到文件系统上的html文件。 我已经知道这个答案了: location /this/is/some/url { index file.html; alias /path/to/the/; } file.html在文件系统上的位置是/path/to/the/file.html 。 不过,我还需要在url /this/is/some/url的末尾追加一个空参数。 所以它应该看起来像这个/this/is/some/url?_escaped_fragment_= 。 我尝试了重写的各种示例,但没有帮助,因为我没有正确使用。