Nginx 使用proxy_pass根据头转发http请求
我使用ip6tables和nginx的组合来处理来自客户端的http请求。nginx服务器侦听端口8081,并且必须在检查报头后转发请求 客户端可以发送两种类型的请求:Nginx 使用proxy_pass根据头转发http请求,nginx,nginx-reverse-proxy,Nginx,Nginx Reverse Proxy,我使用ip6tables和nginx的组合来处理来自客户端的http请求。nginx服务器侦听端口8081,并且必须在检查报头后转发请求 客户端可以发送两种类型的请求: 获取/发布没有标题。这些应重新定向到https://jaguar.mydomain.com 获取/发布特定标题elb jaguar.mydomain.com。这些应重定向到https://elb-jaguar.mydomain.com 当作为nginx-c/home/build/v6 only.conf运行时,nginx失败,因
nginx-c/home/build/v6 only.conf运行时,nginx失败,因为一个server{}
指令在端口8081
上已经有listen
nginx:[emerg]仅在/etc/nginx/v6/v6中为[:]8081复制侦听选项。conf:13
我的配置如下:
server {
listen [::]:8081 ssl ipv6only=on;
server_name elb-jaguar.mydomain.com;
ssl_certificate /etc/ssl/elb.crt;
ssl_certificate_key /etc/ssl/elb.key;
location / {
proxy_pass https://elb-jaguar.mydomain.com:443;
}
}
server {
listen [::]:8081 ssl ipv6only=on;
ssl_certificate /etc/ssl/regular.crt;
ssl_certificate_key /etc/ssl/regular.key;
server_name jaguar.mydomain.com;
location / {
proxy_pass https://jaguar.mydomain.com:443;
}
}
如何通过代理\u pass
修复上述配置以获得所需的转发?很难看到,因为该设置应该可以工作
但仔细看一下,你对IPv6的需求,它说(我的重点是):
IPV6仅限=开|关
此参数(0.7.42)确定(通过IPV6_V6ONLY套接字选项)侦听通配符地址[::]的IPV6套接字将只接受IPV6连接还是同时接受IPV6和IPv4连接。默认情况下,此参数处于启用状态只能在启动时设置一次
由于错误消息抱怨“重复侦听选项”,而不是“已在该端口上侦听”或类似内容,因此表明它抱怨再次尝试设置ipv6 only
(甚至设置为相同的值)
此外,它确实表示默认情况下此参数处于打开状态,因此您可以轻松地将其完全删除,只要尝试一下。另一个松散相关的想法:您只需要单独的服务器块,因为您对子域有不同的SSL证书。如果有使用通配符证书的选项,您可以使用一个证书覆盖这两个域(以及更多域),因此两个域都有一个服务器块(然后代理\u pass https://$host:443$request\u uri;
)