Questions tagged «nginx»

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

2
使用Nginx / Chrome的跨源资源共享(CORS)
我有一个细分如下的网站: api.example.com developers.example.com example.com 我想同时允许example.com和developers.example.com向发出AJAX请求api.example.com。 到目前为止,我的nginx配置 api.example.com,由麒麟提供)是一个Rack应用,如下所示: upstream app_server { server unix:/tmp/api.example.com.sock fail_timeout=0; } server { listen 80; server_name api.example.com; access_log /home/nginx/api.example.com/log/access.log; error_log /home/nginx/api.example.com/log/error.log; location / { add_header 'Access-Control-Allow-Origin' 'http://example.com,http://developers.example.com'; add_header 'Access-Control-Allow-Credentials' 'true'; add_header 'Access-Control-Allow-Headers' 'Content-Type,Accept'; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE'; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect …
13 nginx 

5
Nginx。如何拒绝对未列出的SSL虚拟服务器的请求?
我在同一个IP上有一个通配符SSL证书和几个子域。现在,我希望我的nginx只处理提到的服务器名称,并断开与其他服务器的连接,以便看起来好像 nginx未运行未列出的服务器名称(不响应,拒绝,无效,没有单个字节作为响应)。我做以下 ssl_certificate tls/domain.crt; ssl_certificate_key tls/domain.key; server { listen 1.2.3.4:443 ssl; server_name validname.domain.com; // } server { listen 1.2.3.4:443 ssl; server_name _; // deny all; // return 444; // return 404; //location { // deny all; //} } 我已经尝试了最后一个服务器块中的几乎所有内容,但没有成功。我从已知的虚拟服务器收到有效响应或错误代码。请帮忙。

2
nginx上的维护页面,最佳实践
我想配置服务器以在存在时显示维护页面。我尝试了这段代码并工作: location / { try_files /maintenance.html $uri $uri/ @codeigniter; } 但是我注意到它会带有200个状态代码,并且可能导致搜索引擎混乱。我认为最佳做法是返回503状态代码。在google上,我找到了一些与此相关的页面,例如。但是,它们使用if进行重定向,根据nginx文档,使用ifs是不安全的。 有没有不使用if的方法吗?在这种情况下可以安全使用吗? 谢谢。

3
Nginx重启问题
重新启动Nginx时突然出现以下错误: 重新启动nginx:[警告]:无法打开错误日志文件:open()“ /var/log/nginx/error.log”失败(13:权限被拒绝) 2011/02/16 17:20:58 [warn] 23925#0:仅当主进程使用超级用户特权运行时,“用户”指令才有意义,在/etc/nginx/nginx.conf:1中被忽略 配置文件/etc/nginx/nginx.conf语法正常 2011/02/16 17:20:58 [emerg] 23925#0:open()“ /var/run/nginx.pid”失败(13:权限被拒绝) 配置文件/etc/nginx/nginx.conf测试失败 在站点的前端部分加载,但是某些文件(例如CSS)没有加载。它们存在于服务器上,但是当直接在Chrome中加载资源时,它们会显示“糟糕,无法找到此页面”。 我设置了一个特殊的组和用户来使用suexec为我的域文件运行我的apache文件。我认为Nginx由root拥有,但是我假设这是问题所在,但是我将更改哪些Nginx文件所有权?
13 terminal  nginx 

1
Apache MPM-Worker与Prefork
我正在尝试找出可以在VPS上安装的最佳Apache MPM。我看到了一些基准测试,MPM Worker似乎比Prefork性能更好,但是由于某些原因,每个人似乎都建议在PHP设置中使用Prefork over Worker。 这仅仅是因为某些PHP函数不是线程安全的吗?只setlocale()想到了,但是我将在每个实例上使用相同的语言环境,因此我认为这不会成为问题。我的VPS内存不足,我觉得工作者MPM可以更好地满足我的需求,但是我不确定。 有人可以帮我下定决心吗?谢谢! PS:我也研究了nginx和lighttpd。nginx看起来很棒,但我试图避免从源代码进行编译,但我仍然不太了解php-fpm的用途。关于lighttpd-使用它设置PHP / FCGI非常容易,但是我听说它存在内存泄漏。这仍然是真的吗?

3
Nginx重写URL仅在文件存在的情况下
我需要为Nginx编写一个重写规则,以便如果用户尝试转到旧的图像URL: /images/path/to/image.png 并且文件不存在,请尝试重定向到: /website_images/path/to/image.png 仅当图像存在于新的URL中时,否则继续404。我们主机上的Nginx版本尚没有try_files。
13 nginx  rewrite 

4
Nginx Varnish Nginx Django?
我有一个django应用,我想在它前面的服务器上设置Varnish。在另一个serverfault线程中,有人建议将Nginx放在Varnish的前面。 我应该在缓存服务器上将Nginx放在Varnish的前面吗?如果是这样,我应该在应用服务器上使用Nginx吗?
13 nginx  django  varnish 

2
如何将nginx配置拆分为多行?
尤其是在配置HPKP标头(或其他一般的长标头)时,将nginx配置中的一行拆分为多行会很有用。 这是期望的结果: pin-sha256="X3pGTSOuJeEVw989IJ/cEtXUEmy52zs1TZQrU06KUKg="; pin-sha256="MHJYVThihUrJcxW6wcqyOISTXIsInsdj3xK8QrZbHec="; pin-sha256="isi41AizREkLvvft0IRW4u3XMFR2Yg7bvrF7padyCJg="; pin-sha256="I/bAACUzdYEFNw2ZKRaypOyYvvOtqBzg21g9a5WVClg="; pin-sha256="Y4/Gxyck5JLLnC/zWHtSHfNljuMbOJi6dRQuRJTgYdo="; pin-sha256="/oCVQg3nP3DroGpFdAbaiYzenycUftqrH3LAyaIal2g="; 但是对于浏览器,它只能是一行: pin-sha256="X3pGTSOuJeEVw989IJ/cEtXUEmy52zs1TZQrU06KUKg="; pin-sha256="MHJYVThihUrJcxW6wcqyOISTXIsInsdj3xK8QrZbHec="; pin-sha256="isi41AizREkLvvft0IRW4u3XMFR2Yg7bvrF7padyCJg="; pin-sha256="I/bAACUzdYEFNw2ZKRaypOyYvvOtqBzg21g9a5WVClg="; pin-sha256="Y4/Gxyck5JLLnC/zWHtSHfNljuMbOJi6dRQuRJTgYdo="; pin-sha256="/oCVQg3nP3DroGpFdAbaiYzenycUftqrH3LAyaIal2g="; 所以我尝试了一些事情,但对结果不满意... 首先尝试:将其拆分 add_header Public-Key-Pins ' pin-sha256="X3pGTSOuJeEVw989IJ/cEtXUEmy52zs1TZQrU06KUKg="; pin-sha256="MHJYVThihUrJcxW6wcqyOISTXIsInsdj3xK8QrZbHec="; pin-sha256="isi41AizREkLvvft0IRW4u3XMFR2Yg7bvrF7padyCJg="; pin-sha256="I/bAACUzdYEFNw2ZKRaypOyYvvOtqBzg21g9a5WVClg="; pin-sha256="Y4/Gxyck5JLLnC/zWHtSHfNljuMbOJi6dRQuRJTgYdo="; pin-sha256="/oCVQg3nP3DroGpFdAbaiYzenycUftqrH3LAyaIal2g="; ' 这有效,但是curl我可以看到浏览器收到所有换行符的标题... 第二次尝试:反斜杠 实际上,在已经链接的文章中,Scott Helme建议这样做: add_header Public-Key-Pins ' \ pin-sha256="X3pGTSOuJeEVw989IJ/cEtXUEmy52zs1TZQrU06KUKg="; \ pin-sha256="MHJYVThihUrJcxW6wcqyOISTXIsInsdj3xK8QrZbHec="; \ pin-sha256="isi41AizREkLvvft0IRW4u3XMFR2Yg7bvrF7padyCJg="; \ pin-sha256="I/bAACUzdYEFNw2ZKRaypOyYvvOtqBzg21g9a5WVClg="; \ pin-sha256="Y4/Gxyck5JLLnC/zWHtSHfNljuMbOJi6dRQuRJTgYdo="; \ pin-sha256="/oCVQg3nP3DroGpFdAbaiYzenycUftqrH3LAyaIal2g="; \ ' 但是,在我的情况下,这只是添加了斜杠,也将它们返回给浏览器,因此这是行不通的。 那我该怎么做呢? …

4
Nginx日志分析器
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使其成为服务器故障的主题。 6个月前关闭。 我有一个使用nginx运行的Web应用程序,我想分析日志以获取有关每个文件获得多少匹配以及我们正在生成的404错误和其他错误(Google Analytics(分析)无法提供)的信息。 通常,我只是将awstats放在服务器中,但是使用nginx时,由于缺少cgi-bin,这并不容易。是否有另一个简单的解决方案来获取此信息?我不介意支付第三方为我做此分析。
13 nginx 

2
Nginx-转发HTTP AUTH-用户?
我对Nginx和Jenkins(Hudson)感到有些麻烦。我正在尝试使用Nginx作为具有HTTP基本身份验证的Jenkins实例的反向代理。 到目前为止,它仍然有效,但是我不知道如何通过身份验证用户名传递标头? location / { auth_basic "Restricted"; auth_basic_user_file /usr/share/nginx/.htpasswd; sendfile off; proxy_pass http://192.168.178.102:8080; proxy_redirect default; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-User $http_authorization; proxy_max_temp_file_size 0; #this is the maximum upload size client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 4k; proxy_buffers 4 32k; …

2
Nginx代理缓存-如何检查其是否正常工作?
我已经将我的nginx.conf文件设置为使用在线查找的教程中的代理缓存。现在,我试图弄清楚如何检查它是否真正起作用。 我读过某个地方的文章,add_header X-Cache-Status $upstream_cache_status;在服务器部分的配置文件中添加了缓存标头,该标头将显示响应是否来自缓存(具有HIT,MISS或EXPIRED的值)。 我想知道在哪里可以实际查看此标头(及其值),以及这是否是正确的方法/是否有其他方法。一般来说,我对Web技术是非常陌生的,如果这是一个菜鸟问题,那么抱歉。谢谢!

4
使用Nginx,Apache,mod_wsgi部署Django应用
我有一个django应用程序,可以使用标准开发环境在本地运行。我现在想将其移至EC2进行生产。django文档建议使用apache和mod_wsgi运行,并使用nginx加载静态文件。 我在Ec2机器上运行Ubuntu 12.04。我的Django应用“ ddt”包含一个带有ddt.wsgi的子目录“ apache” import os, sys apache_configuration= os.path.dirname(__file__) project = os.path.dirname(apache_configuration) workspace = os.path.dirname(project) sys.path.append(workspace) sys.path.append('/usr/lib/python2.7/site-packages/django/') sys.path.append('/home/jeffrey/www/ddt/') os.environ['DJANGO_SETTINGS_MODULE'] = 'ddt.settings' import django.core.handlers.wsgi application = django.core.handlers.wsgi.WSGIHandler() 我从apt安装了mod_wsgi。我的apache / httpd.conf包含 NameVirtualHost *:8080 WSGIScriptAlias / /home/jeffrey/www/ddt/apache/ddt.wsgi WSGIPythonPath /home/jeffrey/www/ddt <Directory /home/jeffrey/www/ddt/apache/> <Files ddt.wsgi> Order deny,allow Allow from all </Files> </Directory> 在apache2 / …

2
SSI(服务器端包含)和ESI(边缘端包含)之间的主要区别
我需要在Web服务器级别将动态内容包括到静态页面中。到目前为止,我找到的2个选项是Server Side Include (SSI)和Edge Side Include (ESI)。 虽然SSI看起来似乎是古老而晦涩的(从伊利诺伊大学的95缓存的页面似乎是参考,但显然是来自NCSA httpd曾经为约95%的网络供电的Web服务器),但ESI似乎是较新的和令人欣喜的(w3 2001年的规范,主要由Akamai的人撰写)。 另外,我不断听到Varnish+字ESI,我想知道是否应该这样做。但是,我已经有了一个带有的设置nginx,该设置仅支持SSI,并且希望遵循该KISS原理,并Varnish尽可能避免使用。 对于我的直接用例(在每个页面的顶部都包含一个动态用户栏),我相信SSI可以完成这项工作。但是,我担心随着网站的发展,我将只需要支持一些功能,ESI这些功能将迫使我重新设计所有内容,这使我提出了自己的问题(最终读者说): 哪些不支持的主要功能SSI使您选择ESI(反之亦然)?

3
nginx重写在网址末尾附加参数
我需要配置反向代理,以便在URL的末尾添加以下参数: &locale=de-de 这几乎可以工作: rewrite ^(.*)$ $1&locale=de-de break; 但是,问题是,仅当 '&locale = de-de' 还不存在并且存在'?'时,才需要附加它 在网址中... 我可以在制定正确的正则表达式方面获得一些帮助吗? 另一个问题:如果使用以下命令,为什么我的URL中的问号没有显示: $ uri?$ args 或者$ uri $ is_args $ args转换未编码的url,问号显示为%3f。 有想法吗? 编辑:与proxy_pass结合使用时,似乎存在此行为。通过简单的重写,它确实可以很好地工作。
13 nginx  regex 

3
如何基于X-forward-for标头拒绝对资源的访问
我试图基于在X-forwarded-for标头中传递的客户端IP来限制对Nginx背后资源的访问。Nginx在Google Cloud Platform的Kubernetes集群上的容器中运行,并且实际客户端ip仅在x-forward-for标头中传递 到目前为止,我已经使用以下代码为单个IP做到了这一点: set $allow false; if ($http_x_forwarded_for ~* 123.233.233.123) { set $allow true; } if ($http_x_forward_for ~* 10.20.30.40) { set $allow false; } if ($allow = false) { return 403; } 但是我如何才能对整个IP地址范围进行操作呢?手动指定数百个IP并没有多大意义。 感谢所有帮助
13 nginx 

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.