“proxy_pass” cannot have URI part in location given by regular expression, or inside named location
nginx无法在proxy_pass
指令中处理所需的URI部分,因为位于指定的位置(因此是错误消息)。这是因为nginx是以模块化的方式构建的,每个配置块都是由各个模块在各个阶段读取的。proxy_pass
在以下情况下,指令中不能有URI :
- 正则表达式位置
- 命名的地点
- if 块
正确示例:
- server {
- listen 81;
- server_name localhost;
- location / {
- proxy_pass https://www.baidu.com;
- }
- }
- server {
- listen 80;
- server_name localhost;
- location / {
- root e:\www;
- index index.html index.htm;
- }
- location ^~ /s {
- set $is_mobile 0;
- if ($http_user_agent ~* (mobile|nokia|iphone|ipad|android|samsung|htc|blackberry)) {
- set $is_mobile 1;
- }
- # PC端
- if ($is_mobile = 0) {
- proxy_pass http://localhost:81;
- }
- # 移动端
- if ($is_mobile = 1) {
- proxy_pass http://170.106.148.50;
- }
- }
- }
PC端:
移动端:
本文链接地址: nginx 的 if 逻辑运算判断PC或移动端