Articles of nginx

Nginx:将默认网站httpredirect到https

我有一个网站,可能有不明量的CNAME DNSlogging链接到它。 我需要的是有任何http请求被redirect到https。 我们将使用默authentication书。 无论浏览器中是否inputIP地址或DNS名称,都需要转发到https server { listen 80 default_server; listen [::]:80 default_server; server_name _; return 301 https://$host$request_uri; 我已经尝试了$server_name以及..如果我去http://redirect到“ https:// _ ”。 在Apache中是否有与RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}等价物?

$ request_uri不工作? nginx的

我刚刚configurationnginxredirecthttp到https就像在如何强制或redirect到nginx中的SSL所述? 通过使用: server { listen 80; server_name rsm.website www.rsm.website; return 301 https://www.rsm.website$request_uri; } 而redirect似乎是一半的工作,因为我redirect到https,但似乎松散$request_uripath。 所以,如果用户去rsm.website/foo/faa它总是被redirect到https://rsm.website 我怎样才能使$ request_urivariables工作? 编辑: 似乎redirectwww.rsm.website/foo作品。 它只有在没有www.时候才会失败www. 在rsm.website之前 这是另一个服务器块。 (我只有两个) server { listen 443 ssl; server_name www.rsm.website; ssl_certificate /etc/nginx/ssl/certificate.wwww.rsm.website.crt; ssl_certificate_key /etc/nginx/ssl/www.rsm.website.deprotected.key; client_max_body_size 4G; access_log /web/logs/nginx-access.log; error_log /web/logs/nginx-error.log; location /static/ { alias /web/static/; } location /media/ { alias /web/media/; } location / { […]

Nginx和httpsredirect

我尝试在https://上redirecthttp:// www &http://,但我有一个redirect循环,你知道为什么吗? 当我只把server_name www.mywebsite.lol可以httpsredirect… 我试过了 server { server_name mywebsite.lol; rewrite ^(.*) https://mywebsite.lol$1 permanent; } 和 server { server_name mywebsite.lol; return 301 https://$server_name$request_uri; } 而我的完整:configuration server { # Port listen 80; # Hostname server_name mywebsite.lol; # Logs (acces et erreurs) access_log /var/log/nginx/mywebsite.lol.access.log; error_log /var/log/nginx/mywebsite.lol.error.log; # Repertoire root /home/mywebsite/www; # Fichier a executer par defaut (en […]

如何反向代理URLpath?

我有一个owncloud服务器在owncloud.example.com/owncloud运行它是一个bitnami安装,并要求我通过/ owncloudpath访问它。 我有通过nginx反向代理的东西,但它需要我首先从bitnami页面,我必须采取链接到实际的path。 或者我必须通过完整的path访问url。 如何设置我的反向代理以避免这种情况。 这是我的基本设置,只是玩弄。 server { listen 80; server_name owncloud.example.com; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; proxy_pass http://192.168.1.139:83/; } } 现在反向代理会把我带到owncloud.example.com。 我需要它带我去owncloud.example没有打一个redirect循环。

如何在Nginx上添加子子域?

我试图在Ubuntu上运行Nginxconfiguration一个子子域。 我已经有一个configuration访问http://staging.mydomain.com ,它工作正常,但现在我需要访问这个URL http://api.staging.mydomain.com 。 我试过但没有成功: upstream myapp { server unix:/var/tmp/myapp.sock; } upstream myapp_api { server unix:/var/tmp/myapp_api.sock; } # Configuration to subdomain server { listen 80 default_server; server_name staging.mydomain.com; location / { root /var/www/myapp/current/public; if (!-f $request_filename) { proxy_pass http://myapp; break; } } } # Configuration to sub-subdomain server { listen 80; server_name api.staging.mydomain.com; location […]

Nginx的负载平衡/代理上传与path/重写

基本上我有一个API农场 192.168.1.1,192.168.1.2,192.168.1.3 然而,terminal有不同的文件夹结构(我不能修改的第三方!) 所以基本上我想有一个像这样的nginxconfiguration upsteam api_servers{ server 192.168.1.1/api/; server 192.168.1.2/myApp/api/; server 192.168.1.3/; } server{ listen 80; location / { proxy_pass http://api_servers; } } 但是,在上游服务器中不能有path。 我想我必须重写这些? 我知道如何为传入的请求重写它,但不知道如何以不同的方式重写它到每个后端服务器。 提前谢谢了!!

Nginx使用客户端证书代理http到https

我们有一个不能识别客户端证书的应用程序,并且必须使用客户端证书validation的Web服务。 为了解决这个问题,我们试图使用Nginx来反向代理一个本地(http)url,我们的应用程序将会把它打到远程的HTTPS和客户端证书authentication的服务上。 configuration如下: location /secure/api/ { proxy_pass https://secure.webservice.com/secure/api/; proxy_ssl_certificate /etc/ssl/api-client.crt; proxy_ssl_certificate_key /etc/ssl/api-client.crt.key; proxy_ssl_verify off; } 当试图连接到反向代理url( http://our.proxy.com/secure/api/ )时,它只是坐在那里并旋转。 如果我们使用wget或openssltesting代理的连接,我们可以成功连接。 这里是一个来自nginx / error.log的snippit: 2015/08/25 15:33:56 [info] 29810#0: *57 client closed connection while waiting for request, client: xxxx, server: 0.0.0.0:80 2015/08/25 15:34:05 [info] 29810#0: *53 epoll_wait() reported that client prematurely closed connection, so upstream connection is closed […]

NGINX重写2个地址到相同的目的地

我正在寻找重写2个不同的地址到相同的目的地址。 有没有可能做这样的事情? location = /foo/bar/, /to/fu/ { return 301 /re/bar/; } 或者我必须创build两个单独的redirect? location = /foo/bar/ { return 301 /re/bar/; } – location = /to/fu/ { return 301 /re/bar/; }

Docker卷不适用于Nginx

我已经在里面创build了一个简单的包含Nginx的Docker容器,由于某种原因,它不会从主机访问www卷数据。 这是我用的命令: docker run \ -d \ -p 8080:80 \ –name nginx \ –restart always \ -v /etc/nginx/nginx.conf:/etc/nginx/nginx.conf:ro \ -v /var/www:/usr/share/nginx/html \ -v /home/myuser/myvhost.conf:/etc/nginx/sites-enabled/myvhost.conf:ro \ -v /var/log/nginx:/var/log/nginx \ nginx:1.9.4; 所有的卷都正确安装(我检查与docker inspect ),但是当在网站上我得到一个404和主机上的Nginx error.log说: "/var/www/docker/index.html" is not found (2: No such file or directory) 这是令人惊讶的,因为这条路是绝对正确的

如何在nginx中有条件地拦截fastcgi错误?

我只想在我的$ request_uri处于某种特定格式时设置指令fastcgi_intercept_errors。 这是我做的, if ($request_uri ~* /a/b/c){ error_page 502 @static; fastcgi_intercept_errors on; } 但它给了我错误,fastcgi_intercept_errors指令不允许在这里。 任何方式在这里? 谢谢。