Articles of nginx

使用ProxyPassconfigurationNginx过滤的正确方法

我使用Nginx来代理传递给我的wsgi应用程序与马戏团服务。 我想允许通过该应用程序的stream量只为一些IP地址的一些应用程序的url。 现在看起来像这样: server { listen 80; server_name service.dev; access_log /var/log/service.access.log; error_log /var/log/service.error.log debug; location / { try_files $uri @proxy_to_app; } location @proxy_to_app { proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://127.0.0.1:9000/; } location /admin/ { allow 192.168.5.0/24; deny all; } } 但它不起作用。 如果我有权利,我得到一个404错误,而不是proxy_pass。 你知道我怎么做,而不必每次都复制/粘贴proxy_passconfiguration? 谢谢。

nginx多域指向相同的位置

我有几个域名注册像example.com example.co.uk example.net我认为你有这个想法。 目前我正在nginxconfiguration文件中创build多个服务器块,如: server { listen 80; server_name example.com www.example.com root /var/www/example.com/html } server { listen 80; server_name example.co.uk www.example.co.uk root /var/www/example.com/html } 还有更多的这些。 基本上他们都指向一个文件夹中的同一个网站。 我的问题是 – 是否可以创build服务器块来服务相同的目的? 喜欢 server { listen 80 server_name example.com example.co.uk example.net // etc root /var/www/example.com/html } 提前致谢。

Nginx不能访问上游的.sock文件和公共文件夹

鉴于:DigitalOcean新鲜的Archlinux VPS盒子。 我创build了一个用户'app',并且有一个由systemd启动的二进制文件创build的/home/app/webapp.sock文件: [Unit] Description=Web application server After=network.target [Service] Type=forking User=app PIDFile=/home/app/webapp.pid ExecStart=/home/app/.gem/ruby/2.0.0/bin/thin -d –user app -e production –chdir /home/app/app –socket /home/app/webapp.sock –pid /home/app/webapp.pid –log /home/app/log/webapp.log start ExecReload=/bin/kill -HUP $MAINPID ExecStop=/bin/kill -QUIT $MAINPID [Install] WantedBy=multi-user.target 不想以http用户身份运行此应用程序,因为在某个时间点,我可能决定在另一个用户的另一台机器上运行另一个Web服务器,仅向http用户显示其.sock文件。 Rails已知有安全漏洞,所以我想避免“应用”用户从他的主文件夹和自己的数据中的任何地方。 我有一个sudo用户,“sudoer”,甚至没有办法读取一个pid文件: [sudoer@host ~]$ cat /home/app/webapp.pid cat: /home/app/webapp.pid: Permission denied [sudoer@host ~]$ sudo su – app [app@host ~]$ ls […]

我的nginxredirect设置不起作用

我的网站有问题。 每当我尝试访问我的网站时,都不会redirect。 这意味着当我inputURL作为financenectar.com它打开我的网站在financenectar.com但不redirect到www.financenectar.com。 还有一件事,当我inputwww.financenectar.com时,它甚至没有工作。 当前的nginxconfiguration server { listen 80; ## listen for ipv4; this line is default and implied #listen [::]:80 default ipv6only=on; ## listen for ipv6 root /var/www/financenectar/; index index.php index.html index.htm; # Make site accessible from http://localhost/ server_name financenectar.com; location / { # First attempt to serve request as file, then # as […]

为什么不能nginx超过75秒的代理连接等待?

根据这里的文档,nginx proxy_connect_timeout不能有超过75秒的延迟。 我知道可怕的是有一个延迟的应用程序,但我很好奇为什么这个确切的价值?

NGINX 301将带有参数的URLredirect到新的URL

我部署了一个网站,试图将一些原始urlredirect到新的url。 对于像这样的redirect,我对于NGINXconfiguration相当新颖。 这个工作: location /contactus.aspx { return 301 $scheme://$host/contacts; } 这些不起作用(url结果为404,不redirect): location /productcatalog.aspx?directoryid=11 { return 301 $scheme://$host/hard-drive-cases; } location /productdetails.aspx?productid=26* { return 301 $scheme://$host/lto-5-blue; } 我已经service nginx reload没有错误。 工作的redirect和不工作的redirect之间的最大区别是添加的参数。 redirect带参数的URL(最后是一个通配符)的最好方法是什么,以便它能正常工作?

Nginx没有find子目录,也没有在默认目录下运行index.php

我从Apache更改为Nginx,现在我有一些问题。 当我尝试访问任何文件夹,例如http://devserver/monitor/web ,我有一个Symfony项目,我得到404错误 当我尝试访问http://devserver我一直得到这个消息File not found. 这就是我的/etc/nginx/conf.d/default.conf文件的样子: server { listen 80; server_name devserver; location / { root /var/www/html; index index.php; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; […]

如何使用SSL支持为我的SaaS产品实现自定义域?

我有一个需要支持自定义SSL域的SaaS项目。 我看了看SNI ,看起来很完美。 如果我决定(或需要)支持Windows XP。 我还可以使用其他什么技术? 我知道我可以创build虚拟IP地址,但不认为这将与我们目前的托pipe服务提供商(他们将收取我们的每个IP,他们必须为我们的防火墙和负载平衡器工作)。 还有其他的常用技巧吗? 我已经研究了反向代理(或者像CloudFlare),但没有看到任何明确的。 我使用nginx代理Apache2的PHP执行。

带有空域和通配符的nginx SSL

这是一个令人讨厌的问题,我希望有人能帮助我。 首先,我运行自己的CA,所以我正在做自签名的证书; 我可以用openssl来做任何我需要的东西。 我有一个域,example.com和一个运行nginx的networking服务器,我试图设置一个这样的情况,我redirect: http://example.com -> http://www.example.com 和 httpS://example.com -> httpS://www.example.com 我的问题不在于让nginx做我需要的东西; 它可以重写或redirect。 目前,我有一个简单的(如果是邪恶的,我知道! 我的问题是SSL证书。 如果我为“example.com”生成一个正常的单域证书,则会在“www.example.com”中收到证书错误。 好的,我会为“* .example.com”制作一个通配符! 除了现在我得到一个裸露的域名证书错误。 这对我来说是有道理的,但是如果可能的话,我仍然想把它们合并成一个证书,一个nginx服务器块。 所以我尝试制作一个名为“DNS:example.com,DNS:*。example.com”的subjectAltName的CSR。 但是,这似乎也没有工作:裸露的域名作品和redirect,但后来一刷新,我得到一个奇怪的证书错误,说“证书只对example.com有效”,而在检查CN是“* .example.com”。 任何人都可以提供一些build议,如何解决这个问题,并尽可能简单地创build这套redirect? 是的,我知道我可以完全忽略https://example.com ,只能在www.example.com上听SSL,但我的完美主义者却不允许; 我希望本网站的所有内容对SSL都是完全不可知的,并且使用完全相同的方式,即使是最初的redirect也是如此。 编辑:nginxconfiguration: server { listen 80; listen [::]:80; listen 443 ssl; listen [::]:443 ssl; root /var/www/example.com; index index.html index.htm; server_name www.example.com example.com; ssl_certificate /etc/ssl/sites/example.com.crt; ssl_certificate_key /etc/ssl/sites/example.com.key; ssl_session_timeout 5m; ssl_protocols […]

nginx proxy_pass与后端请求客户端证书

我们正在代理后端,我们不控制后端在https上连接时请求客户端证书。 当我们通过代理请求这些页面时,连接超时而后端没有响应,但是如果我们绕过代理,页面就可以正常工作。 这是处理客户端证书的nginx问题,还是应该在其他地方看? Nginxconfiguration: server { listen 443 ssl; ssl on; ssl_certificate /etc/nginx/ssl/webserver.pem; ssl_certificate_key /etc/nginx/ssl/webserver.key; location / { proxy_pass https://www.backendsite.com; proxy_set_header X-Forwarded-For $http_x_forwarded_for; } }