nginx的反向代理

clipboard.png

是这样的,如图所示我的域名是oi.XXX.com 接口访问的也是oi.XXX.com

但是我想让调用接口的时候访问的是dev.XXX.com

想问一下各位大牛我的nginx应该怎么改呢
当前配置如下

server{

# 监听端口
listen 80;

# 本地域名
server_name dev.yuanoi.com;

# 根目录
root /data/wwwroot/dev.guquan381.com;

access_log logs/dev.yuanoi.com.access.log;
# 错误日志
error_log logs/dev.yuanoi.com.error.log;


# 映射到oi
location / {
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr; #获取真实ip
    proxy_connect_timeout 90;
    proxy_send_timeout 90;
    proxy_read_timeout 90;
    proxy_buffer_size 4k;
    proxy_buffers 4 32k;
    proxy_busy_buffers_size 64k;
    proxy_temp_file_write_size 64k;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #获取代理者的真实ip
    proxy_pass http://oi.yuanoi.com;    #转向 处理
    proxy_redirect off;
}

location ~ ^/favicon\.ico$ {
    root /data/wwwroot/oi.guquan381.com;
}

location @fallback {
    rewrite ^.*$ /index.html break;
}

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
    expires 30d;
}

location ~ .*\.(js|css)?$ {
expires 12h;
}

}

阅读 3.6k
4 个回答

server_nameproxy_pass两个域名配反了

在所有接口前面加上/api,然后配置location ^~ /api {

proxy_pass         http://dev.XXX.com; 

}

新手上路,请多包涵

虽然不知道你是不是表达反了, 但是你的这行 proxy_set_header Host $host;
是明显会出问题的,按照你的写法 反向代理请求服务器 http://oi.yuanoi.com的时候,header中的host确是 dev.yuanoi.com, 这会导致服务vhost匹配不到 server_name oi.yuanoi.com,
你把 proxy_set_header Host $host; 改成 proxy_set_header Host oi.yuanoi.com;试试看

nginx层做转发 或者 在应用代码里 去做重定向

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题