我正尝试将Api Gateway与Elastic Beanstalk中的api连接起来。 我希望我的api只能通过Api Gateway访问,为此我在后端使用客户端的SSL证书授权(像这样aws发布链接: http : //docs.aws.amazon.com/es_es/apigateway/latest/developerguide/getting -started-client-side-ssl-authentication.html )。 所以我的build筑是这样的: API GATEWAY->弹性负载平衡 – > EC2(弹性BEANSTALK) 我的EC2机器有NGINX和Ruby。 连接的工作是这样的: API网关 – >(80端口) – >弹性加载平衡器 – >(443端口) – > NGINX – > RUBY 我正在做NGINX的客户端身份validation。 当我使用浏览器访问Elastic Load Balancer时,显示400错误请求 – NGINX错误:没有发送必需的SSL证书(这是正确的,因为我没有发送证书)。 但是,当我访问使用Api网关和发送客户端证书时,我得到了同样的错误(我不明白为什么)。 当我在NGINX中configurationSSL连接时,我正在使用由我签名的SSL证书(也许这是问题?) 我的问题的其他可能的原因是Elastic Load Balancer中的端口configuration(图中)。 我有后端身份validation:已禁用。 这是一个问题吗? Pictura端口configurationELB 我的nginxconfiguration是: upstream my_app { server unix:///var/run/puma/my_app.sock; } log_format healthd '$msec"$uri"' […]
当configurationnginx的网站有ssl时,我在网上find的例子基本上重复了位置设置。 大多数例子只有默认的根位置,所以这不是什么大不了的事情,但是当你有一些位置和重写规则时,重复这个configuration会变得很难维护。 我已经考虑到代理SSL本地主机的请求来解决这个问题,但这是一种丑陋的。 我也考虑过使用文件包括,但该网站的位置configuration应该在1个文件,因为它们是相关的。 有什么build议么? 编辑:我们正在使用nginx版本0.6.32。
我运行nginx的静态内容和Apache / mod_wsgi服务django的代理。 我将example.com和test.example.com作为Apache / Django的代理,static.example.com通过nginx直接提供所有静态文件。 我有一个通配符SSL证书,使每个这些子域可以使用SSL(我只有一个IP)。 为什么使用listen 443 default_server ssl; 在test.example.com 或 example.com中,SSL都可以工作,但是我必须明确地收听static.example.com的443。 ssl_certificate /etc/ssl/certs/example.chained.crt; ssl_certificate_key /etc/ssl/private/example.key; server { listen 80; listen 443; server_name static.example.com; # … serves content … } server { listen 80; listen 443 default_server ssl; server_name example.com; # … proxy pass to http://example.com:8080 (apache) … } server { listen 80; […]
我以前有一个Socket.io脚本运行良好的http,但升级到https已经打破了它。 我已经在服务器上安装了证书,但没有运气。 服务器设置的代码是: var https = require('https'), fs = require('fs'); var options = { key: fs.readFileSync('/etc/nginx/ssl/default/54082/server.key'), cert: fs.readFileSync('/etc/nginx/ssl/default/54082/server.crt') }; var app = https.createServer(options); var io = require('socket.io').listen(app); 但是,在Web浏览器中,页面无法连接到它,并且控制台显示the server responded with a status of 502 (Bad Gateway)响应。 任何想法,如果脚本设置是错误的? 或者也许在Nginx的设置? 非常感谢 编辑:我用来连接的前端代码: <script type="text/javascript" src="https://socket.example.com/socket.io/socket.io.js"></script> <script> var io = io('https://socket.example.com', { secure: true }); </script> 编辑:: […]
我有一个nginx运行。 现在我想让我的nginx使用SSL: certbot-auto –nginx -d my.domain.com -n –agree-tos –email admin@mail.com OUTPUT: Performing the following challenges: tls-sni-01 challenge for my.domain.com Cleaning up challenges Cannot find a VirtualHost matching domain my.domain.com. my.domain.com指向我的服务器的IP。 这是它的DNS名称。 我究竟做错了什么? 我已经做了这个为Apache和它工作正常。 我的nginx正在运行(而且我不能在certbot-auto之后手动重新启动它,但是当我使用certbot-auto –apache时,这是不必要的certbot-auto –apache
根据以下文章,有些networking只允许连接到端口80和443: 套接字IO在公司networking内连接失败 编辑:为了说明问题,最终用户在企业防火墙后面使用浏览器。 我的服务器防火墙设置在我的控制之下。 我已经读了关于Nginx的使用proxy_pass到Socket.io监听另一个端口(我已经读了关于缺点),并且反向代理使用nodejitsu / node-http-proxy将非节点stream量传递给Nginx(其他缺点)。 我有兴趣考虑所有可能的select。 经过大量search,我没有发现有关socket.io监听端口443的可能性,如下所示: var io = require('socket.io').listen(443); 客户端连接如下: var socket = io.connect('http://url:443/', {secure: false, port: '443'}); 除了在服务器上放弃使用https之外,还有其他的缺点吗? (例如,企业networking是否通过端口443阻止非SSL通信?)
在使用AWS CloudFront来终止我的SSL之前,我需要将此stream量与非CloudFrontstream量区分开来,以在Nginx中设置proxy_set_header 。 我相信最好的方法是检查X-Amz-Cf-Id头( 由CloudFront添加 ),并在存在proxy_set_header时设置它。 不过,我知道这是不可能的在Nginx的if语句中设置proxy_set_header ,这导致我的问题。 我怎样才能设置一个proxy_set_header值只有当这个头是存在的?
对于Rails 5(beta1)我有一个很奇怪的问题,它阻止了我安全地提交任何表单。 当在Nginx(Ubuntu 12.04上的1.4.6)反向代理解密SSL的背后运行生产模式时,Rails拒绝我的CSRF令牌,说他们是无效的,尽pipe正确的令牌正在被提交的forms。 当我在Nginx中closuresSSL时,一切正常。 任何帮助,将不胜感激。
我有一个NGINX服务器,我试图用Let's Encrypt来添加SSL。 我的开发设置如下: url : dev.domain.in root: /var/www/dev/html 制作如下: url : domain.in root: /var/www/production/html 所以在我的nginx默认页面中,我有两个服务器块,一个用于开发,另一个用于生产 我想为这两个服务器提供一个证书。 我知道根据Let's Encrypt网站的命令如下 cd / opt / letsencrypt ./letsencrypt-auto certonly -a webroot –webroot-path = / usr / share / nginx / html -d example.com -d www.example.com 但是这只能在SUBDOMAIN具有相同的webroot的情况下才能完成。 所以我怎么可以在这里添加CERT 请帮我一下
我使用nginx作为后端服务器的代理。 后端服务器也使用nginx并使用ssl_client_certificate和ssl_verify_client指令强制执行客户端证书authentication。 在我的nginx服务器中,我设置了以下内容: location /proxy { proxy_pass https://www.backend.com; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_ssl_certificate /etc/nginx/cert/client.crt; proxy_ssl_certificate_key /etc/nginx/cert/client.key; } 根据nginx文档 。 但是,后端仍然响应400个响应代码"No required SSL certificate was sent" 。 请注意,当使用wget和客户机证书向后端服务器发出请求时,我得到一个有效的200 OK响应: wget –certificate=/etc/nginx/cert/client.crt –private-key=/etc/nginx/cert/client.key https://www.backend.com 我在我的nginxconfiguration中错过了什么?