Articles of nginx

如何让nginx返回404,除非请求一个特定的域名?

我有一个nginx服务器,我想返回404时,请求anything除了anything是www , mypythonapp1或mypythonapp2 我在/etc/nginx/sites-enabled创build了一个00-noredirect文件: server { listen 80; listen 443 ssl; server_name _; return 404; } 不幸的是,一切都redirect到mypythonapp1 。 其他服务器块如下: server { listen mypythonapp1.mydomain.com:80; server_name mypythonapp1.mydomain.com; (…) listen mypythonapp1.mydomain.com:443 ssl; # managed by Certbot (…) } 我认为这可能与我/etc/nginx/sites-enabled/mypythonapp1 ,即使我不确定: (…) if ($scheme != "https") { return 301 https://$host$request_uri; } # managed by Certbot (…) 有什么我必须添加到00-noredirect避免这种不需​​要的行为? 编辑:按照@Tim的要求,这里是我的 – […]

在mac os上为mginx启用mcrypt

我试图运行Laravel的存储库,它会引发这个错误: Use of undefined constant MCRYPT_RIJNDAEL_128 – assumed 'MCRYPT_RIJNDAEL_128' 我search了几乎每一个链接,并不能解决它。 所以当我意识到我需要安装mcrypt扩展。 所以我试过的是: brew intsall php71-mcrypt brew install mcrypt 我也试图在php.ini中添加extenstion=mcrypt.so 我试图重启nginx而没有成功( nginx -s stop, nginx ) brew search mcyrpt显示我安装了它们 php -i | grep mcrypt php -i | grep mcrypt显示: PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/Cellar/php71/7.1.4_16/lib/php/extensions/no-debug-non-zts-20160303/mailparse.so' – dlopen(/usr/local/Cellar/php71/7.1.4_16/lib/php/extensions/no-debug-non-zts-20160303/mailparse.so, 9): image not found in […]

nginx try_files不执行内部redirect

我试图configurationnginx,所以它会加载没有扩展名的PHP文件,但仍然将缺less文件的请求传递给前端控制器。 我开始了一个大部分的工作configuration,如下所示,从webroot / about.php正确加载“about.php”之类的URL,并正确地将缺less文件的所有请求发送到webroot / index.php: server { listen 80; listen 443 ssl http2; server_name *.example.com; root /srv/example/$host; client_max_body_size 8M; fastcgi_buffers 16 16k; fastcgi_buffer_size 32k; large_client_header_buffers 8 32k; ssl_certificate /etc/ssl/certs/example+ca.pem; ssl_certificate_key /etc/ssl/private/example.key; ssl_ciphers '…'; location / { try_files $uri /index.php$is_args$args; } location /blog { 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_set_header X-Forwarded-Proto […]

与TLS1或TLS1.1连接时无证书

我做: openssl s_client -connect website.com:443 -tls1_1 并得到: CONNECTED(00000003) 140120601777808:error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:s3_pkt.c:1315:SSL alert number 40 140120601777808:error:1409E0E5:SSL routines:SSL3_WRITE_BYTES:ssl handshake failure:s3_pkt.c:637: — no peer certificate available — No client certificate CA names sent — SSL handshake has read 7 bytes and written 0 bytes — New, (NONE), Cipher is (NONE) Secure Renegotiation IS NOT supported Compression: […]

如何使用apache2 / sites-available / example.com.conf而不是000-default.conf?

nginx被configuration为apache(2.4.18)的反向代理和多个域的节点。 /etc/nginx/sites-available/example.com : server { listen 80; server_name example.com; # /api is running on php/apache location /api { proxy_pass http://localhost:8080/api; proxy_set_header Host $host; } # all the rest is handled by node.js location / { proxy_pass http://localhost:3000; proxy_set_header Host $host; } } /etc/apache2/sites-available/example.com : <VirtualHost *:8080> ServerName example.com DocumentRoot /var/www/example.com/api </VirtualHost> /etc/apache2/sites-available/000-default.conf : <VirtualHost *:8080> […]

Nginx反向代理结尾斜杠

这个问题已经被多次回答了,但是在我的情况中却有一个转折点。 我有一个在端口3000上运行的节点应用程序。我正在使用nginx来反向代理。 现在应用程序只有在最后有一个斜线的时候才起作用。 所以这个工程: https://example.com/main/site/react/ : https://example.com/main/site/react/ 这不: https://example.com/main/site/react : https://example.com/main/site/react 这是我正在使用的configuration: location /main/site/react { error_log /var/log/nginx/app.error.log; rewrite ^/main/site/react/(?:|[\w\/]+)(\/static.*)$ $1 break; rewrite ^/main/site/react/?(.*)$ /$1 break; proxy_pass http://127.0.0.1:3000/; } 在检查其他相关问题后,添加以下重写规则(在error_log之后)为我工作: rewrite ^(.*[^/])$ $1/ permanent; 上面的规则呈现我的节点应用程序,但它失败了我的静态资源。 我有一些静态资源重写哪些不工作。 所以这个URL不起作用: https://example.com/main/site/react/static/js/bundle.js : https://example.com/main/site/react/static/js/bundle.js 。 它总是呈现索引HTML页面。

如何使用Nginx负载平衡更新一个Web服务器,而另一个正在响应?

我正在寻找我公司项目的选项和解决scheme,我们可以在多个服务器上托pipe我们的网站,我们可以使用负载平衡。 主要的问题是,当我更新网站,我需要重新启动服务器。 我们的Web项目是用Djanog / Python编写的,每次推送更新时都需要重启uWSGI。 目前,我们正在单台服务器上运行我们的网站,并且在客户端使用应用程序时很难更新/重新启动。 我一直在寻找互联网上的解决scheme,我在DigitalOcean的网站上find了一篇很好的文章。 你可以在这里阅读更多。 我们也希望将我们的数据库从运行在同一个应用程序服务器上的数据库中分离出来,并在特定的机器上使用,还需要使用主从设置进行复制 所以我的问题是,例如,我们的网站example.com运行在Web服务器/ IP 101和102.这两个站点都连接到数据库IP 201.所以现在,当我推动更新服务器101,并重新启动应用程序,我希望102能够处理所有的请求而不会抛出任何错误或任何东西。 101更新后,我希望它能够重新启动并处理所有的请求,而我更新服务器102.我也将有相同的数据库设置,所以201和202作为主人,一个正在更新,另一个正在进行。 我们目前的服务器运行Ubuntu和Nginx,MySQL提供Django应用程序。 我可能不熟悉行业术语,所以我正在解释这个问题。 我不是在谈论像谷歌,微软或Facebook这样的公司,因为我知道他们有这个问题的定制解决scheme,但任何人都可以引导我寻找条款或任何解释,文章,post或教程,我可以阅读处理这个解决scheme 谢谢

Nginx的反向代理保持打开所有连接刚刚超过1秒?

我的configuration: upstream api-backend { server localhost:9005; } server { listen 80; lingering_close off; root /var/www/html; index index.html; location /api/ { proxy_http_version 1.1; proxy_set_header Connection ""; add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT'; proxy_pass http://api-backend/; } location / { expires off; try_files $uri $uri/ =404; } } 我提供了/ var / www / html文件,/ api端点转发到Go服务。 Go服务在几秒内完成请求,但Chrome的networking标签报告请求都比1s长几毫秒。 […]

提供以nginx为代理的Web应用程序的静态文件

我正在尝试使用nginx作为一个web应用程序的代理(在gunicorn上运行的django) server { listen 80; server_name registry.blabla; error_log /var/log/nginx/registry.blabla.error.log; access_log /var/log/nginx/registry.blabla.access.log; location /favicon.ico { access_log off; log_not_found off; } location /static { root /home/xxx/registry; } # location / { # try_files $uri $uri/ @backend; # } location / { proxy_pass http://blabla:8989/registryadmin/; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 10m; client_body_buffer_size […]

如何干掉一个包含一堆重复的`rewrite`指令的nginxconfiguration文件

我有一个/etc/nginx/nginx.conf这个基本结构: http { server { listen 80; server_name example.com; root /var/html; location / { rewrite …; } } server { listen 443; server_name example.com; root /var/html; location / { rewrite …; } } } 有许多rewrite指令,http和https server块之间的所有相同,所以我试图将它们提取到一个外部文件: http { server { listen 80; include /etc/nginx/redirects.conf; } server { listen 443; include /etc/nginx/redirects.conf; } } redirects.conf文件只包含: server_name […]