Questions tagged «nginx»

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

1
Nginx使用SSL从旧域重定向到新域
我正在尝试将我的网站的域名从https://www.myolddomain.se/更改为https://www.mynewdomain.se/ 问题是,对于我的旧域,我在所有页面上强制使用SSL,因此google和其他网站上的所有链接都以https链接。当我尝试通过https链接访问旧域时,出现证书错误。所以我的问题是:如何将与https链接的所有页面重定向到nginx中另一个受https保护的域,而不会出现此错误? 我进行了一些研究,找到了用于重定向网页的解决方案,该解决方案现在已插入我的配置文件中。虽然我仍然收到证书错误! server { server_name .myolddomain.se; return 301 https://www.mynewdomain.se$request_uri; } 但是我就是无法正常工作!如果有人能给出答案,我将不胜感激

1
Nginx是否支持DER格式证书?
我尝试使用一个,但失败了。将其转换为PEM可以正常工作。我们的用户将证书上传到我们的服务器,我们想知道是否可以配置nginx使其同时支持两者。如果不是,是否可以通过编程方式确定证书文件是DER还是PEM格式?
10 nginx 

4
如何在Nginx中设置后备错误页面?
目前,我正在配置nginx对某些错误页面和其他“默认”媒体文件(例如favicon.ico和robots.txt)的处理,但遇到了一个小问题,即我无法以某些错误页面的方式工作。 基本上,我想做的是为该服务器的根目录下的服务器提供某些文件,例如/var/www/someserver.com/robots.txt。如果该文件不存在,我希望nginx转到“默认”,即/var/www/default/robots.txt。这是我如何(成功)配置的基本要点: server { ... root /var/www/someserver.com; location ~* ^/(robots\.txt)$ { error_page 404 = @default; } location @default { root /var/www/default; } } 效果很好。 我正在尝试对错误页面执行相同的操作,但是我无法做到这一点: server { ... root /var/www/someserver.com; error_page 404 /404.html; location ~* ^/(404\.html)$ { error_page 404 = @default; } location @default { root /var/www/default; } } 请注意,在您访问someserver.com/404.html的意义上,这种“工作方式”会首先尝试加载/var/www/someserver.com/404.html,然后回退到/ …
10 nginx 

1
使用不带ssl的http2进行nginx通信的nginx
我有nginx-proxy和nginx-server docker容器。 client browser < > nginx-proxy 通过proxy_pass是http2和443。 nginx-proxy < > nginx-server 是http1,我想将其移动到http2但不使用SSL-由于它们都位于同一服务器上,因此我看不到加密流量的好处。 我阅读了nginx文档,他们说它支持不带ssl的http2。所以我80 http2;在nginx-server vhost中添加了listen指令。 但是,浏览器不显示网站,而是下载具有以下内容的文件: 0000 1204 0000 0000 0000 0300 0000 8000 0400 0000 0000 0500 ffff ff00 0004 0800 0000 0000 7fff 0000 0000 0807 0000 0000 0000 0000 0000 0000 01 看起来很像这个问题,但我的不是browser <> nginx问题,而是nginx <> …
10 nginx  http2 

1
如何在Nginx的map指令中指定几个变量
好吧,我有一个与此问题略有不同的问题:我不想同时映射两个变量,我想使用另外两个作为参数来映射一个变量。 实际上,我已经在有关map指令的文档中阅读到: 在0.9.0版之前,只能在第一个参数中指定单个变量。 因此,由于我拥有nginx 1.8,因此我希望能够在第一个参数中使用多个变量。 这使我认为我可以在此示例中编写类似于最后两个map指令的内容: map $http_user_agent $bot { default ""; "~*Googlebot" "yes"; "~*MJ12bot" "yes"; "~*bingbot" "yes"; etc. } map $request $bot $np { default "" ""; default "yes" ""; "~*newproject" "" "yes"; "~*newproject" "yes" ""; } map $bot $np $regular { "" "" "yes"; "" "yes" ""; "yes" …

2
nginx要包含的相对路径
在Nginx conf文件中,有什么方法可以include相对于当前conf文件指定另一个conf文件? 我想写: server { listen 80; server_name localhost; include "../apis/basic.conf"; ... }

3
我可以在Nginx服务的静态文件中使用Nginx环境变量吗?
如果我在nginx配置中使用环境变量,并且nginx配置为仅提供静态文件(html,js,css-例如AngularJs应用程序),我有什么方法可以在nginx服务的JS文件中使用环境变量?或者是运行非静态服务器(例如io.js,php等)的唯一方法。 顺便说一句,您不能在nginx的配置中本地使用环境变量。 当我在Nginx配置中谈论环境变量时,我的意思是像这篇文章一样:如何在Nginx.conf中使用环境变量env APP_WEB_1_PORT_5000_TCP_ADDR;和$ENV{"APP_WEB_1_PORT_5000_TCP_ADDR"}; 确切说明您的用例 我的特定用例是,我在Docker容器中有一个由nginx驱动的AngularJS应用。该应用程序是一个“单页应用程序”,它完全消耗了在另一个系统上运行的API。目前,我在生产和登台之间运行一个不同的Docker容器,因为该应用程序具有一些不同的配置,例如Google-Analtyics代码。此特定于环境的数据保存在config.js文件中,并且当前值已进行硬编码,mastergit中分支的一个值和分支的其他值staging。我想更改设计,以便可以在生产和暂存中使用相同的容器。我想通过一个ENV VAR到当我运行它(容器docker run -e GACODE=UA-12345-6 ...),并有使用nginx的ENV VAR(通过env GACODE;与$ENV{"GACODE"}这样的config.js文件可以使用传入的GoogleAnaltyics代码,而不是对其进行硬编码)。我不知道这是否可行(因此提出问题;)。仅使用nginx可使我的容器成为一个单进程,而如果必须使用io.js,则需要多个链接的容器,并且需要移动的部件会更加复杂。

1
如何在不使用sudo的情况下将nginx日志共享给其他用户?
我的服务器上有2个用户。一个带有sudo的访问权限,另一个没有。我如何授予对Nginx日志的访问权限 /var/log/nginx/error.log 给另一个sudo未经许可的用户使用cat /var/log/nginx/error.log?我可以创建类似符号链接的东西来登录他的/ home / username目录吗? 所以我的问题是- sudo未经许可的用户如何检查nginx日志?
10 linux  ubuntu  nginx  logging 

1
位置指令不起作用
对于我的NGINX服务器,我设置了一个虚拟服务器,用于分发静态内容。目前,我正在尝试对其进行设置,以使图像具有到期日期。但是,当我为此创建一个位置指令时,一切都将导致404。 我的配置现在看起来像这样: /srv/www/static.conf server { listen 80; server_name static.*.*; location / { root /srv/www/static; deny all; } location /images { expires 1y; log_not_found off; root /srv/www/static/images; } } 注意,此文件包含在http指令内的/etc/nginx/nginx.conf中 我试图访问图像,在,让我们说...... static.example.com/images/screenshots/something.png。当然,该图像也存在于/srv/www/static/images/screenshots/something.png。但是,要说的地址不起作用,只会告诉我404 Not Found。 但是,如果我删除location /images并更改location /为以下内容... location / { root /srv/www/static; } 有用!我在这里做错了什么?

2
Nginx SSL-SSL:错误:0906D06C:PEM例程:PEM_read_bio:无起始行
我正在尝试使用123-reg中的证书在服务器上启用ssl,但我一直收到此错误: 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) 这是我的nginx配置: 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; } 我尝试将crt和key设置为完整文件权限,但是没有区别。 我的crt文件是与ca crt一起发布的crt。 更新资料 我尝试将两个密钥都复制到sperate文件中,然后运行“ cat mykey.crt >> ca.cert” 我也尝试过手动将密钥复制到同一文件中。 有任何想法吗?
10 nginx  ssl 

3
使用特定源ip作为代理的nginx
我正在使用nginx提供静态文件并将其他请求代理到某些Tomcat实例。问题是我不知道如何选择nginx用于连接到Tomcat的IP地址。 每个Tomcat实例仅接受来自特定IP地址的HTTP连接。我的服务器具有所有这些IP。我只是无法选择nginx使用哪个。 这是我的配置文件: proxy_set_header Host $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-Proto $scheme; location /integracao/ { proxy_pass http://X.X.X.X:9080/integracao/; } location /solr/ { proxy_pass http://Y.Y.Y.Y:8080/solr/; } 我的服务器有一个带有两个IP地址的接口:A和B。我需要使用IP A连接到第一个Tomcat,使用IP B连接到Solr。 有人知道怎么做吗?
10 nginx  proxy  ip  ip-address 

3
Nginx不向外部IP地址提供请求
我在端口81上运行了nginx。我可以使用telnet进行连接telnet 127.0.0.1 81,一切都很好。 但是,当我尝试从Mac(外部IP地址)远程登录到我的计算机时,只会出现以下错误: telnet: connect to address 109.123.x.x: Connection refused telnet: Unable to connect to remote host 这是我的/ etc / nginx / sites-available / default文件: server { listen 81; ## listen for ipv4; this line is default and implied #listen [::]:80 default ipv6only=on; ## listen for ipv6 root /usr/share/nginx/www; …
10 nginx  ip  ip-address 

1
Nginx产品从旧类别到新类别的简单重定向
我正在将产品从旧类别重定向到新类别。 我设法使其遵循以下规则: rewrite ^/old-category/(.*) /new-category/$1; 但是我想知道何时应该使用“结束行”符号$,在我的情况下,使用或不使用它有什么区别。例如: rewrite ^/old-category/(.*)$ /new-category/$1; 另外,如果用户只是写旧的类别名称(不带产品),我也想重定向用户,应该只为类别重定向创建新规则,还是可以编辑上面的当前规则在两种情况下都可以使用。 预先感谢您的回答。

2
如何使用nginx conf进行if / else语句?
用nginx可以做这样的事情吗? if ( $http_user_agent = "wget" ){ server { listen 11.11.11.11:1111; root /website1/; server_name example.com www.example.com; else server { listen 22.22.22.22:22222; root /website2/; server_name example2.com www.example2.com; }

1
使用Real-IP时如何记录$ remote_addr的原始值
我的环境中的用户请求通过多个系统传递: [客户]-> [ELB] ---> [nginx]-> [网络] (ELB = AWS Elastic Load Balancer) 多亏了这个答案,我让nginx确定了正确的客户端IP地址并将其传递给带有X-Forwarded-For和X-Real_IP标头的上游服务器(网络)。相关的nginx配置: real_ip_header X-Forwarded-For; set_real_ip_from 10.0.0.0/8; real_ip_recursive on; proxy_set_header X-Real-IP $remote_addr; 我的问题是,nginx中的Real IP模块用$remote_addr其X-Forwarded-For计算结果替换了现有变量。这给了我原始的客户端IP,但是我丢失了实际上将请求发送到代理(即ELB)的系统的IP地址。 总的来说,拥有客户端IP对我来说更重要,但是我希望能够记录完整的请求链,以便我可以了解(并调试)流量的流向。目前,我只能让nginx记录客户端IP,它自己的IP和上游服务器IP。我也希望能够登录ELB IP。 我看到X-Istence在2013年问了同样的问题,运气不佳。从那以后有什么变化或改善?

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.