Questions tagged «nginx»

Nginx(“ eNgine x”)是一种轻量级的高性能HTTP服务器,反向代理,TCP流代理和邮件代理,在类似BSD的许可证下发布。

1
将所有请求重定向到HTTPS(一个子目录除外)
我正在尝试从nginx Web服务器上的自签名证书迁移到“让我们加密”证书。 目前,我将所有请求重定向http/80到https/443,使用我之前创建的自签名证书。 现在-根据我的理解,让我们加密向端口80发出请求(因为我正在使用的webroot选项certbot)。这些请求将被重定向,从而导致证书生成失败。 我尝试通过以下服务器块来实现此目的,监听端口80: server { listen 80; server_name sub.domain.tld; server_tokens off; location /.well-known { root /var/www/letsencrypt; } location / { return 301 https://$host$request_uri; } } 但是无论如何/.well-known都将请求重定向到https/443。 我如何将所有请求从重定向http/80到https/443,除了以外的请求/.well-known/?

1
为什么Nginx $ ssl_client_i_dn的格式突然改变了?
我们正在使用客户端证书来认证我们的一位客户。 我们的设置是这样的:在Django应用程序的前面有nginx。在我们的nginx配置中,我们具有必需的参数,以使实际的客户端证书验证有效(ssl_client_certificate,ssl_verify_client等等),并且 uwsgi_param X-Client-Verify $ssl_client_verify; uwsgi_param X-Client-DN $ssl_client_s_dn; uwsgi_param X-SSL-Issuer $ssl_client_i_dn; 这意味着我们将这些变量的值输入到我们的Django应用中。然后,Django应用程序使用此信息来识别正在连接的用户并对其进行授权。 我们已经成功使用了几个月,没有任何问题,突然之间我们开始收到有关人们无法使用证书登录的报告。原来,$ssl_client_s_dn和$ssl_client_i_dn值的格式已从斜杠分隔的格式进行了更改: /C=SE/O=Some organziation/CN=Some CA 转换为逗号分隔的格式: CN=Some CA,O=Some organization,C=SE 解决这个问题很容易,但是我不明白为什么。所以我的问题确实是: 价值$ssl_client_s_dn从何而来?它是由nginx设置的吗?客户端? 此值可以有格式的任何文档/规范,并且它有名称吗?

5
nginx在Windows上停止/重新加载失败,因为访问被拒绝
我正在Windows Server 2008 R2(x64)上将nginx作为Windows服务运行。我为此使用Windows Service Wrapper。(实际上,我已经遵循了本教程:http : //mercurial.selenic.com/wiki/HgServeNginxWindows。) 该服务运行正常。但是,服务器不处理信号(例如,停止/重新加载)。 这意味着如果我停止服务,nginx不会停止。(我必须杀死它。) 当我想从命令行重新加载配置时: C:\Users\Administrator>E:\apath\nginx\nginx.exe -p E:\apath\nginx -c E:\apath\nginx.conf -s reload 它输出: nginx: [error] OpenEvent("Global\ngx_reload_4268") failed (5: Access is denied) 我以管理员身份运行命令,并且该服务在NETWORK SERVICE用户下运行。 有任何提示或类似问题吗?


2
Nginx多个根
我想将请求转移到特定的子目录,再转移到另一个根目录。怎么样?我现有的块是: server { listen 80; server_name www.domain.com; location / { root /home/me/Documents/site1; index index.html; } location /petproject { root /home/me/pet-Project/website; index index.html; rewrite ^/petproject(.*)$ /$1; } # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } …

4
如何在Nginx中为所有虚拟主机全局设置robots.txt
我正在尝试为robots.txtnginx http服务器下的所有虚拟主机设置。通过在main中添加以下内容,我能够在Apache中做到这一点httpd.conf: <Location "/robots.txt"> SetHandler None </Location> Alias /robots.txt /var/www/html/robots.txt 我尝试通过在nginx.conf和(b)中添加以下包含conf.d / robots.conf的行来与nginx做类似的事情 location ^~ /robots.txt { alias /var/www/html/robots.txt; } 我尝试过使用'=',甚至将其放在虚拟主机之一中进行测试。似乎没有任何作用。 我在这里想念什么?还有另一种方法可以实现这一目标吗?
13 nginx  robots.txt 

3
在负载均衡器后面使用ngnix将HTTP重写为https
我正在使用Rackspace负载平衡器,该平衡器使我可以在管理面板中设置ssl密钥/ pem。一切正常,我可以同时使用http和https协议。但是,如果我尝试使用以下方法将http重定向到https: server{ listen *:80; server_name mydomain.com www.mydomain.com; rewrite ^ https://mydomain.com$request_uri? permanent; ...我得到一个重定向循环。我知道我没有监听端口443,但这是因为负载均衡器为我处理了该端口。我也尝试将重写包装if ($scheme ~* http){成无效。 我的问题的另一部分是,我想从网址中删除www,我可以一次重写吗?上面的改写是否也应该解决这个问题? 谢谢你的帮助!

4
nginx传回自定义标头
我有下面的例子 location / { proxy_read_timeout 2000; proxy_next_upstream error; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_pass_header X_CUSTOM_HEADER; proxy_redirect off; proxy_max_temp_file_size 0; proxy_pass https://prod; break; } 现在,当我使用以下卷曲线时 curl --head -H "X_CUSTOM_HEADER: foo" http://domain.com/api/test 现在这不起作用..后端的apache / php看不到标题。如果我绕过Nginx它可以工作 curl --head -H "X_CUSTOM_HEADER: foo" http://web1.domain.com/api/test

2
上游服务器中的Nginx http前缀
我正在尝试使用Nginx代理传递给两个Docker容器。这是我的上游conf文件: upstream api_servers { server http://192.168.49.4:49155; server http://192.168.49.4:49156; } 这是我尝试加载的内容: nginx: [emerg] invalid host in upstream "http://192.168.49.4:49155" in /etc/nginx/conf.d/api_upstream.conf:3 nginx: configuration file /etc/nginx/nginx.conf test failed 一旦删除了http://前缀,错误就会停止发生。这是为什么?
12 centos  nginx  vagrant 

1
如何配置nginx使其与Express兼容?
我正在尝试配置nginx,以便它proxy_pass向我的节点应用程序发出请求。关于StackOverflow的问题有很多支持:https ://stackoverflow.com/questions/5009324/node-js-nginx-and-now ,我从那里开始使用config。 (但是由于问题是关于服务器配置的,因此应该在ServerFault上) 这是nginx的配置: server { listen 80; listen [::]:80; root /var/www/services.stefanow.net/public_html; index index.html index.htm; server_name services.stefanow.net; location / { try_files $uri $uri/ =404; } location /test-express { proxy_pass http://127.0.0.1:3002; } location /test-http { proxy_pass http://127.0.0.1:3003; } } 使用普通节点: var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': …

1
我的nginx重写正在下载php文件
我正在尝试以下重写规则: location / { index index.php index.html; rewrite ^/test$ /test.php break; } 我也有: location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; include fastcgi_params; fastcgi_param SCRIPT_FILENAME /home/sites/default$fastcgi_script_name; fastcgi_index index.php; } 正常的php文件可以正常工作,但是似乎我的重定向只是下载要重定向到的php文件,而不是解析它。 我想念什么?我加载了文件,而不是通过在第一个位置块中放入fastcgi来下载文件,但仍然没有将其解析为php。
12 php  nginx  rewrite 

1
如何定义Nginx首先使用SNI发送的SSL证书?
我在Debian Squeeze上将nginx 1.2.7与OpenSSL 0.9.8o一起用于大约30个域。我在其中两个上启用了SSL,这两种方法都可以正常使用。 SSL配置可用于两个域: listen 443 ssl; ssl_certificate /etc/nginx/ssl/example.org-unified.crt; ssl_certificate_key /etc/nginx/ssl/example.org.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:RC4:HIGH:!MD5:!aNULL:!EDH; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; add_header Strict-Transport-Security max-age=600000; 使用ssllabs.com检查器检查两个域我得到一个域的通知“该站点仅在支持SNI的浏览器中工作”。对于其他域,我不会收到此消息。默认情况下,nginx似乎将按字母顺序的第一个域的证书发送给不支持SNI的客户端。我可以改变这种行为吗? 换句话说:我想将nginx配置为具有一个特定的域,即使没有SNI支持的客户端也可以使用SSL。其他域也应与SSL一起使用,但是如果仅在启用了SNI的客户端上可以使用,则可以。 谢谢!
12 nginx  ssl  sni 

3
Nginx是否包含配置文件?
Nginx包含配置文件的顺序是固定的还是随机的?Apache 明确指出通配符以字母顺序扩展。对于Nginx,这似乎并不适用,并且手册对此一无所获。 在我的设置中,20_example.com包含在之前00_default,这违背了我在此处定义共享指令(如日志格式)的目的。

2
Nginx中子目录的反向代理
我想设置我的VPS为我的Heroku应用反向代理(http://lovemaple.heroku.com)所以,如果我去拜访mysite.com/blog我就能得到上述内容中http://lovemaple.heroku.com 我按照Apache Wiki上的说明进行操作。 location /couchdb { rewrite /couchdb/(.*) /$1 break; proxy_pass http://localhost:5984; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } 我根据自己的情况进行了更改: location /blog { rewrite /blog/(.*) /$1 break; proxy_pass http://lovemaple.heroku.com; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } 当我访问时mysite.com/blog,页面显示出来,但是无法获取js / css文件(404)。 他们的联系变成了,mysite.com/style.css但不是mysite.com/blog/style.css。 有什么问题,我该如何解决?

4
您如何有条件地在Nginx vhost中包含文件?
在下面的几行中,我可能会有一个特定于站点的配置文件,其中包含该站点唯一的其他fastcgi_params。如果该文件存在,我要加载它。 server { listen 80 default; server_name _; root /path/www/$host; # Pass PHP scripts to php-fastcgi listening on port 9000 location ~ \.php { include fastcgi_params; fastcgi_pass 127.0.0.1:9000; if (-f /path/www/$host/nginx.conf) { include /path/www/$host/nginx.conf; } } } 但是,这不起作用,我得到的错误是: nginx:[emerg]此处不允许包含“ include”指令 更新资料 我认为与其分开检查,不如让我包括检查。 server { listen 80 default; server_name _; root …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.