有没有办法根据查询参数代理通行证? 我需要代理传递根URL请求到服务器A.但是,如果根url有一定的查询参数,我需要代理传递给服务器B.我怎么能实现这一点? 以下是我目前的configuration: location / { proxy_pass http://xxxxxx; proxy_redirect off; proxy_set_header Host $host:$server_port; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 10m; }
我试图运行两个域名,一个使用通配符证书,另一个使用来自一个IP和一个nginx的常规证书。 安装程序:example1.com,带有常规证书的通配证书example2.com 我目前的通配符设置的nginxconfiguration看起来像这样(我还没有开始添加第二个域): /etc/nginx/sites-available/example1.com: server { listen 443 default_server ssl; server_name _; ssl_certificate /etc/nginx/ssl/example1.com/example1.com.crt; ssl_certificate_key /etc/nginx/ssl/example1.com/example1.com.key; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; # Perfect Forward Security ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS +RC4 RC4"; } server { […]
首先是一些背景:我们有一个embedded式设备,可以将很多小事件上传到Web服务器。 分块编码用于发布此信息。 每个事件都作为一个单独的块发送,所以web服务器(node.js)可以立即对事件做出反应。 所有这一切都像一个魅力。 禁用服务器并在服务器上运行netcat会显示设备发送的内容: sudo nc -l 8080 POST /embedded_endpoint/ HTTP/1.1 Host: url.com User-Agent: spot/33-dirty Transfer-Encoding: chunked Accept: text/x-events Content-Type: text/x-events Cache-Control: no-cache 120 {"some","json message"} 232 {"other","json event"} 232 {"and a lot more","up to 150 messages per second!"} 0 现在我在我的networking服务器(版本1.6.0)上安装了nginx。 最后,我希望它处理SSL,我想处理加快正常的networkingstream量。 如果我现在启用nginx这个服务器configuration: server { listen 8080; location / { proxy_http_version 1.1; expires off; […]
我发现'multi_accept'在Nginx中默认为'off',如下所示: multi_accept
我最近部署了我的第一个nginx安装程序,一切工作真的很好,除了位置parsing驱使我疯了。 我有一个简单的PHP fastcgi设置像这样: location ~ \.php { if (!-e $request_filename) { return 404; } include /etc/nginx/fastcgi.conf; keepalive_timeout 0; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass 127.0.0.1:9000; } 现在我想要像这样使用基本身份validation来保护一些位置: location /madmin { auth_basic "Restricted"; auth_basic_user_file /var/www/localhost/admincp/.htpasswd; } 在他的设置下,nginx在/ madmin时要求input密码,但是不会在/madmin/foo.php中提问。 如果我将auth位置更改为“location〜^ / madmin”,那么nginx会为php文件下载… 是不是可以在nginx中configuration多个位置? 如果没有,这里的解决方法是什么? 谢谢你的帮助。
我有一个使用SNI的Nginx实例来从一个IP服务多个HTTPS域。 这个设置唯一的问题是Nginx在请求服务器的裸IP的IP地址或者没有对应的HTTPS服务器块的那个IP地址列出的域时,Nginx响应第一个(作为默认)域。 在这种情况下,我宁愿简单地返回一个标准的403禁止 – 我会设置一个默认的服务器块来做到这一点,但我不能看到解决客户端证书不匹配的警告。 (如何c | C)我configurationNginx拒绝对这样的未知/未定义的域的请求,而不需要指定一个特定的ssl证书,这将打乱浏览器? (也就是说,我需要Nginx拒绝这个请求,然后用一个“坏”证书来破坏客户端 – 从客户端的POV开始,这应该与根本没有定义HTTPS服务器块的情况相同)。
我试图启用SSL服务器使用123-reg的证书,但我不断收到此错误: nginx: [emerg] SSL_CTX_use_certificate_chain_file("/opt/nginx/conf/cleantechlms.crt") failed (SSL: error:0906D06C:PEM routines:PEM_read_bio:no start line error:140DC009:SSL routines:SSL_CTX_use_certificate_chain_file:PEM lib) 这是我的nginxconfiguration: server { listen 443; server_name a-fake-url.com; root /file/path/public; passenger_enabled on; ssl on; ssl_certificate /opt/nginx/conf/cleantechlms.crt; ssl_certificate_key /opt/nginx/conf/cleantechlms.key; } 我已经尝试设置我的CTR和关键到完整的文件权限,但没有任何区别。 我的crt文件是我与crt连接发出的crt文件。 更新 我试图在sperate文件中复制两个键,然后运行'cat mykey.crt >> ca.cert' 此外,我尝试手动将密钥复制到相同的文件。 有任何想法吗?
我们正在尝试使用ngx_postgres模块通过NGINX进行基本authentication。 我们希望从查询结果对中检索一个值并将其添加到HTTP头,然后将其代理到另一个服务器。 我们已经成功通过postgres进行身份validation,但问题是已经将结果对传递给代理。 我们目前使用的代码如下: location = /test_auth { internal; postgres_escape $user $remote_user; postgres_escape $pass $remote_passwd; postgres_pass geo_database; postgres_query "select user_name,contract_id,access_token from schema_name.table_name where user_name=$user and password=md5($pass);"; postgres_rewrite no_rows 401; more_set_headers -s 401 'WWW-Authenticate: Basic realm="Restricted"'; postgres_output none; postgres_set $query_val 0 0 required; } location /test/ { auth_request /test_auth; proxy_pass http://back_end_server/public-dev/; proxy_set_header test $query_val; proxy_redirect http://back_end_server/public-dev/ […]
nginx-common包附带的systemd单元文件以root身份运行主进程,这让我感到紧张。 我假设它以root身份运行的唯一原因是绑定端口80,但作为root是为了矫枉过正,所以我以普通用户的身份运行它,并为其提供CAP_NET_BIND_SERVICEfunction。 我已经调整了单元文件,看起来像这样: [Service] Type=forking PIDFile=/var/run/nginx/nginx.pid ExecStartPre=/usr/sbin/nginx -t -q -g 'daemon on; master_process on;' ExecStart=/usr/sbin/nginx -g 'daemon on; master_process on;' ExecReload=/usr/sbin/nginx -g 'daemon on; master_process on;' -s reload ExecStop=/usr/sbin/nginx -s quit CapabilityBoundingSet=CAP_NET_BIND_SERVICE Capabilities=cap_net_bind_service+=ep user=www-data 这种方法有什么缺点吗? nginx是否因为其他原因而期望成为root? 有没有更好的方法来lockingnginx? 我知道一些人喜欢做这个,但是这似乎很麻烦。
我尝试使用一个,它失败了。 转换成PEM工作正常。 我们的用户将证书上传到我们的服务器,我们想知道是否可以configurationnginx以支持两者。 如果没有,有没有办法以编程方式确定证书文件是DER还是PEM格式?