From xserverlinux at gmail.com Sat Apr 1 20:49:17 2023 From: xserverlinux at gmail.com (Rick Gutierrez) Date: Sat, 1 Apr 2023 16:49:17 -0400 Subject: situation with friendly urls In-Reply-To: References: Message-ID: El jue, 30 mar 2023 a las 23:12, Rick Gutierrez () escribió: > Let me try, I'll put it in the reverse proxy I send the log, there is a folder that nginx is not loading for me "assets" https://pastebin.com/JMP3n7iB I think there could be an error, what do you think? -- rickygm http://gnuforever.homelinux.com From softwareinfojam at gmail.com Thu Apr 6 14:59:10 2023 From: softwareinfojam at gmail.com (Software Info) Date: Thu, 6 Apr 2023 09:59:10 -0500 Subject: Nginx use Redis for caching Message-ID: Hi All, I am trying to figure out how to use redis for caching in nginx. I found out how to do it in Wordpress but for a local php based site that was set up, I am not seeing how to do it. Shouldn't I be able to pass settings in nginx.conf for the Redis url and password? Can anyone point me in the right direction please? Thanks in advance. Best Regards, From arut at nginx.com Fri Apr 7 14:28:43 2023 From: arut at nginx.com (Roman Arutyunyan) Date: Fri, 7 Apr 2023 18:28:43 +0400 Subject: Future of QUIC in Stream Message-ID: <20230407142843.nggphpeyy227l2qo@N00W24XTQX> Hi everyone, As we are approaching the merge of QUIC code into mainline, there's one important issue that's still on the table. That's QUIC in Stream[1]. In nginx-quic branch[2], QUIC is supported both in http and Stream. In http, there are two application-level protocols supported by nginx, which are HTTP/3 and hq-interop (HTTP/0.9 over QUIC). Stream only supports plain QUIC without an application-level protocol involved. http { server { listen 8443 quic; # the defaults #http3 on; #http3_hq off; ... } } stream { server { listen 9443 quic; ... } } While QUIC in Stream has been a handy tool for testing QUIC implementation in its early days, the truth is, we don't see many application-level protocols other that HTTP/3, that work over QUIC. One such protocol is DNS-over-QUIC (DoQ) [3]. If you try to make it work over a generic QUIC proxy in Stream, you'll quickly realize that DoQ uses DNS/UDP packet format, rather DNS/TCP, so it cannot be proxied to a TCP backend. As a result, DoQ support would require a separate module for dealing with DNS packet prefix. HTTP/3 cannot be proxied by a generic QUIC -> TCP proxy as well. Considering the above, our current plan is to remove QUIC support from Stream before the merge. In future we may bring it back depending on availability of application-level protocols that work over QUIC. We are open for feedback about QUIC in Stream, application protocols and the features you expect in Stream. [1] https://nginx.org/en/docs/stream/ngx_stream_core_module.html [2] https://hg.nginx.org/nginx-quic/ [3] https://www.rfc-editor.org/rfc/rfc9250.html -- Roman Arutyunyan From osa at freebsd.org.ru Fri Apr 7 23:44:59 2023 From: osa at freebsd.org.ru (Sergey A. Osokin) Date: Sat, 8 Apr 2023 02:44:59 +0300 Subject: Nginx use Redis for caching In-Reply-To: References: Message-ID: Hi, hope you're doing well. On Thu, Apr 06, 2023 at 09:59:10AM -0500, Software Info wrote: > I am trying to figure out how to use redis for caching in nginx. I > found out how to do it in Wordpress but for a local php based site > that was set up, I am not seeing how to do it. Shouldn't I be able to > pass settings in nginx.conf for the Redis url and password? Can anyone > point me in the right direction please? Thanks in advance. I believe that all necessary information is available in README, https://github.com/osokin/ngx_http_redis/blob/master/README. Please go ahead and take a look on the Example 3, it describes how to: o) create a gzipped content; o) push the gzipped content to a redis server; o) configure nginx to get a content from the redis server. Hope that helps. Thank you. -- Sergey A. Osokin From xserverlinux at gmail.com Sun Apr 9 03:29:25 2023 From: xserverlinux at gmail.com (Rick Gutierrez) Date: Sat, 8 Apr 2023 23:29:25 -0400 Subject: situation with friendly urls In-Reply-To: References: Message-ID: El sáb, 1 abr 2023 a las 16:49, Rick Gutierrez () escribió: > > El jue, 30 mar 2023 a las 23:12, Rick Gutierrez > () escribió: > Hi here again, I have tried different configurations but I cannot get the project website to load correctly. ### backend config location /assets/ { alias /var/www/sites/netsoluciones.com/htdocs/assets/; } location /css/ { alias /var/www/sites/netsoluciones.com/htdocs/css/; } location /img/ { alias /var/www/sites/netsoluciones.com/htdocs/img/; } location /vendor/ { alias /var/www/sites/netsoluciones.com/htdocs/vendor/; } https://pastebin.com/JMP3n7iB any idea , suggestion? -- rickygm http://gnuforever.homelinux.com From francis at daoine.org Sun Apr 9 11:26:49 2023 From: francis at daoine.org (Francis Daly) Date: Sun, 9 Apr 2023 12:26:49 +0100 Subject: situation with friendly urls In-Reply-To: References: Message-ID: <20230409112649.GB15845@daoine.org> On Sat, Apr 08, 2023 at 11:29:25PM -0400, Rick Gutierrez wrote: Hi there, > Hi here again, I have tried different configurations but I cannot get > the project website to load correctly. When you say that it does not load correctly, can you show one specific request that does not get the response that you want it to get? That should make it easier to identify where things are going wrong. For what it is worth: the debug log that you show, does not appear to come from a system that is using the configuration that you show. So it is possible that the configuration that you are changing, is not the one that the running nginx is actively using. (Or maybe you are only showing a part of the configuration that is not used in this request?) The debug log does not show the locations /assets/ or /css/ or the like; it mainly shows locations related to the third-party pagespeed module. >From what you describe, the browser should make a request to the "front" nginx server, which should use its proxy_pass config to make a request to the "backend" nginx server, which should then do whatever it is configured to do. It is not clear to me what request is being made to the "front" server, that is not being handled as you want it to be. > location /assets/ { > > alias /var/www/sites/netsoluciones.com/htdocs/assets/; > > } > https://pastebin.com/JMP3n7iB That seems to show a request for /assets/images/empresa/x26910210_152867885365030_7535289409698400565_o.png.pagespeed.ic.B57rrxzkqD.webp that is handled in the regex location ~ ".*\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+", and not in the prefix location /assets/. > any idea , suggestion? More information. It looks like you want the "/assets/" request to be handled by serving a file from the filesystem; but that seems unrelated to php, friendly urls, and two languages. So if you can describe how you want one specific request to be handled, and can show how it actually is handled, maybe the first place where those two things differ can be identified. Cheers, f -- Francis Daly francis at daoine.org From xserverlinux at gmail.com Sun Apr 9 20:08:30 2023 From: xserverlinux at gmail.com (Rick Gutierrez) Date: Sun, 9 Apr 2023 16:08:30 -0400 Subject: situation with friendly urls In-Reply-To: <20230409112649.GB15845@daoine.org> References: <20230409112649.GB15845@daoine.org> Message-ID: El dom, 9 abr 2023 a las 7:27, Francis Daly () escribió: > Hi Francis :) > > When you say that it does not load correctly, can you show one specific > request that does not get the response that you want it to get? That > should make it easier to identify where things are going wrong. https://netsoluciones.com This is the site, for example when I want to load the site in English it doesn't do it, it doesn't load the images and css either. > For what it is worth: the debug log that you show, does not appear to > come from a system that is using the configuration that you show. I think this is my mistake, I show you the backend config and then the reverse proxy. ### backend config of nignx location / { try_files $uri $uri/ /index.php?$args; root /var/www/sites/netsoluciones.com/htdocs; index index.php index.html index.htm; } location /assets/ { alias /var/www/sites/netsoluciones.com/htdocs/assets/; } location /css/ { alias /var/www/sites/netsoluciones.com/htdocs/css/; } location /img/ { alias /var/www/sites/netsoluciones.com/htdocs/img/; } location /vendor/ { alias /var/www/sites/netsoluciones.com/htdocs/vendor/; } # Scripts en PHP: location ~ "\.php$" { fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_index index.php; # fastcgi_pass 127.0.0.1:9000; ### REVERSE PROXY upstream backend00 { server X.X.X.X:80; keepalive 2; } server { if ($host = www.netsoluciones.com) { return 301 https://$host$request_uri; } # managed by Certbot if ($host = netsoluciones.com) { return 301 https://$host$request_uri; } # managed by Certbot listen 80; server_name www.netsoluciones.com netsoluciones.com; #YourIP or domain pagespeed unplugged; return 301 https://$server_name$request_uri; # redirect all to use ssl } server { listen 443 ssl http2; server_name www.netsoluciones.com netsoluciones.com; add_header Cache-Control "max-age=86400, public"; # ssl on; ssl_certificate /etc/letsencrypt/live/DDDD/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/DDDD/privkey.pem; # managed by Certbot ssl_trusted_certificate /etc/letsencrypt/live/www.netsoluciones.com/chain.pem; ssl_protocols TLSv1.3 TLSv1.2; ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GC M-SHA384:ECDHE-RSA-AES256-SHA384; ssl_prefer_server_ciphers on; ssl_stapling on; ssl_stapling_verify on; add_header Strict-Transport-Security "max-age=31557600; includeSubDomains"; add_header X-Xss-Protection "1; mode=block" always; add_header X-Frame-Options "SAMEORIGIN" always; add_header X-Content-Type-Options "nosniff" always; include /etc/nginx/default.d/pagespeed_filters.conf; keepalive_requests 1000; keepalive_timeout 5 5; ssl_session_cache shared:SSL:10m; ssl_session_timeout 30m; brotli on; brotli_comp_level 4; brotli_types text/plain text/css application/json application/javascript application/x-javascript text/xml app lication/xml application/xml+rss text/javascript; location / { proxy_http_version 1.1; proxy_set_header Connection ""; 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_request_buffering off; proxy_buffering off; proxy_pass http://backend00; > > So it is possible that the configuration that you are changing, is not > the one that the running nginx is actively using. > > (Or maybe you are only showing a part of the configuration that is not > used in this request?) > > The debug log does not show the locations /assets/ or /css/ or the like; > it mainly shows locations related to the third-party pagespeed module. > > From what you describe, the browser should make a request to the "front" > nginx server, which should use its proxy_pass config to make a request > to the "backend" nginx server, which should then do whatever it is > configured to do. > > It is not clear to me what request is being made to the "front" server, > that is not being handled as you want it to be. > > > location /assets/ { > > > I adapted that last configuration in the backend from an example I saw on the internet of a person with a similar problem, but it doesn't work for me so I'll delete it. > More information. > > It looks like you want the "/assets/" request to be handled by serving a > file from the filesystem; but that seems unrelated to php, friendly urls, > and two languages. > > So if you can describe how you want one specific request to be handled, > and can show how it actually is handled, maybe the first place where > those two things differ can be identified. > > Cheers, > I hope that by looking at the site you have a better idea. thnk. -- rickygm http://gnuforever.homelinux.com From francis at daoine.org Mon Apr 10 08:27:00 2023 From: francis at daoine.org (Francis Daly) Date: Mon, 10 Apr 2023 09:27:00 +0100 Subject: situation with friendly urls In-Reply-To: References: <20230409112649.GB15845@daoine.org> Message-ID: <20230410082700.GC15845@daoine.org> On Sun, Apr 09, 2023 at 04:08:30PM -0400, Rick Gutierrez wrote: > El dom, 9 abr 2023 a las 7:27, Francis Daly () escribió: Hi there, > https://netsoluciones.com > > This is the site, for example when I want to load the site in English > it doesn't do it, it doesn't load the images and css either. When I try loading that site now, I see lots of requests to things that end in ".css" that get a HTTP 404 response; I do not see any images. The first one is for https://netsoluciones.com/assets/helpers/animate.css. Based on the config you provided, that should be handled by the "front" nginx by doing a proxy_pass to the "back" nginx; and the "back" nginx should provide the content of the file /var/www/sites/netsoluciones.com/htdocs/assets/helpers/animate.css. The end result is a 404 File Not Found. Does that file exist on the back-end nginx server? What do those nginx logs say for this request? Did the request get to it at all, or did the request stop at the front-end nginx server? What do *those* nginx logs say for this request? If you make a test request like curl -i https://netsoluciones.com/assets/helpers/animate.css do you see the response that you expect? (Which should probably be HTTP 200 along with the content of the expected file.) Slightly strangely: when I do that using curl, I get a HTTP 200 response but with html not css; where my browser gets a HTTP 404 response. Maybe they are talking to different servers, or maybe there is some config that handles the request differently based on something other than the url. > I hope that by looking at the site you have a better idea. Not really, no, sorry. I do not know how things are intended to look, so I cannot tell which parts are not that way. Cheers, f -- Francis Daly francis at daoine.org From xserverlinux at gmail.com Mon Apr 10 15:07:11 2023 From: xserverlinux at gmail.com (Rick Gutierrez) Date: Mon, 10 Apr 2023 11:07:11 -0400 Subject: situation with friendly urls In-Reply-To: <20230410082700.GC15845@daoine.org> References: <20230409112649.GB15845@daoine.org> <20230410082700.GC15845@daoine.org> Message-ID: El lun, 10 abr 2023 a las 4:27, Francis Daly () escribió: > > On Sun, Apr 09, 2023 at 04:08:30PM -0400, Rick Gutierrez wrote: > > El dom, 9 abr 2023 a las 7:27, Francis Daly () escribió: > > Hi there, > > > https://netsoluciones.com > > > > This is the site, for example when I want to load the site in English > > it doesn't do it, it doesn't load the images and css either. > > When I try loading that site now, I see lots of requests to things that > end in ".css" that get a HTTP 404 response; I do not see any images. > > The first one is for https://netsoluciones.com/assets/helpers/animate.css. > > Based on the config you provided, that should be handled by > the "front" nginx by doing a proxy_pass to the "back" nginx; > and the "back" nginx should provide the content of the file > /var/www/sites/netsoluciones.com/htdocs/assets/helpers/animate.css. > > The end result is a 404 File Not Found. Sorry Francis the folder path was wrong, update and try again > > Does that file exist on the back-end nginx server? What do those nginx > logs say for this request? Did the request get to it at all, or did the > request stop at the front-end nginx server? What do *those* nginx logs > say for this request? > > If you make a test request like > > curl -i https://netsoluciones.com/assets/helpers/animate.css > > do you see the response that you expect? (Which should probably be HTTP > 200 along with the content of the expected file.) > > Slightly strangely: when I do that using curl, I get a HTTP 200 response > but with html not css; where my browser gets a HTTP 404 response. Maybe > they are talking to different servers, or maybe there is some config > that handles the request differently based on something other than the url. > > > I hope that by looking at the site you have a better idea. > > Not really, no, sorry. > > I do not know how things are intended to look, so I cannot tell which > parts are not that way. > Let me see if I send a screenshot, locally it loads fine. -- rickygm http://gnuforever.homelinux.com -------------- next part -------------- A non-text attachment was scrubbed... Name: home.png Type: image/png Size: 521898 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: productos.png Type: image/png Size: 149255 bytes Desc: not available URL: From xeioex at nginx.com Mon Apr 10 22:38:21 2023 From: xeioex at nginx.com (Dmitry Volyntsev) Date: Mon, 10 Apr 2023 15:38:21 -0700 Subject: njs-0.7.12 Message-ID: Hello, I'm glad to announce a new release of NGINX JavaScript module (njs). Notable new features: - "zlib" module: : const zlib = require('zlib'); : zlib.deflateRawSync('αβγ').toString('base64') : /* "O7fx3KZzmwE=" */ : : zlib.inflateRawSync(Buffer.from('O7fx3KZzmwE=', 'base64')).toString() : /* "αβγ" */ Learn more about njs: - Overview and introduction: https://nginx.org/en/docs/njs/ - NGINX JavaScript in Your Web Server Configuration: https://youtu.be/Jc_L6UffFOs - Extending NGINX with Custom Code: https://youtu.be/0CVhq4AUU7M - Using node modules with njs: https://nginx.org/en/docs/njs/node_modules.html - Writing njs code using TypeScript definition files: https://nginx.org/en/docs/njs/typescript.html Feel free to try it and give us feedback on: - Github: https://github.com/nginx/njs/issues - Mailing list: https://mailman.nginx.org/mailman/listinfo/nginx-devel Additional examples and howtos can be found here: - Github: https://github.com/nginx/njs-examples Changes with njs 0.7.12 10 Apr 2023 nginx modules: *) Bugfix: fixed Headers() constructor in Fetch API. Core: *) Feature: added Hash.copy() method in "crypto" module. *) Feature: added "zlib" module. *) Improvement: added support for export {name as default} statement. *) Bugfix: fixed Number constructor according to the spec. From francis at daoine.org Mon Apr 10 23:15:15 2023 From: francis at daoine.org (Francis Daly) Date: Tue, 11 Apr 2023 00:15:15 +0100 Subject: situation with friendly urls In-Reply-To: References: <20230409112649.GB15845@daoine.org> <20230410082700.GC15845@daoine.org> Message-ID: <20230410231515.GD15845@daoine.org> On Mon, Apr 10, 2023 at 11:07:11AM -0400, Rick Gutierrez wrote: Hi there, > Sorry Francis the folder path was wrong, update and try again I now see some more things getting good responses, but there are still lots of missing images, and the browser "developer tools" network console shows lots of failing requests. I do not know which ones are broken because files are not where they are expected to be, and which ones are broken because of the "friendly url" issue you are reporting. > Let me see if I send a screenshot, locally it loads fine. When I load the web site from the public internet, I do not see what specific url should lead to those screenshots. If you can identify one particular url, where the response from nginx is not what you want it to be, then maybe that one can be analysed in more detail. Otherwise, I'm afraid that "something does not work" is not enough of a problem report for further action. Cheers, f -- Francis Daly francis at daoine.org From mdounin at mdounin.ru Tue Apr 11 16:17:31 2023 From: mdounin at mdounin.ru (Maxim Dounin) Date: Tue, 11 Apr 2023 19:17:31 +0300 Subject: nginx-1.24.0 Message-ID: Changes with nginx 1.24.0 11 Apr 2023 *) 1.24.x stable branch. -- Maxim Dounin http://nginx.org/ From softwareinfojam at gmail.com Thu Apr 13 19:54:12 2023 From: softwareinfojam at gmail.com (Software Info) Date: Thu, 13 Apr 2023 14:54:12 -0500 Subject: Nginx use Redis for caching In-Reply-To: References: Message-ID: Fantastic. That helps. Thank you very much. Best Regards, On Fri, Apr 7, 2023 at 6:45 PM Sergey A. Osokin wrote: > > Hi, > > hope you're doing well. > > On Thu, Apr 06, 2023 at 09:59:10AM -0500, Software Info wrote: > > I am trying to figure out how to use redis for caching in nginx. I > > found out how to do it in Wordpress but for a local php based site > > that was set up, I am not seeing how to do it. Shouldn't I be able to > > pass settings in nginx.conf for the Redis url and password? Can anyone > > point me in the right direction please? Thanks in advance. > > I believe that all necessary information is available in README, > https://github.com/osokin/ngx_http_redis/blob/master/README. > > Please go ahead and take a look on the Example 3, it > describes how to: > o) create a gzipped content; > o) push the gzipped content to a redis server; > o) configure nginx to get a content from the redis server. > > Hope that helps. > > Thank you. > > -- > Sergey A. Osokin > _______________________________________________ > nginx mailing list > nginx at nginx.org > https://mailman.nginx.org/mailman/listinfo/nginx From y.abadi at f5.com Tue Apr 18 06:14:46 2023 From: y.abadi at f5.com (Yuval Abadi) Date: Tue, 18 Apr 2023 06:14:46 +0000 Subject: ngx_list_free Message-ID: Hi Ngx_list_t have create api but no free_list api Why? I wrote my own free_list, is anyone else face this issue? -------------- next part -------------- An HTML attachment was scrubbed... URL: From mdounin at mdounin.ru Tue Apr 18 12:35:42 2023 From: mdounin at mdounin.ru (Maxim Dounin) Date: Tue, 18 Apr 2023 15:35:42 +0300 Subject: ngx_list_free In-Reply-To: References: Message-ID: Hello! On Tue, Apr 18, 2023 at 06:14:46AM +0000, Yuval Abadi via nginx wrote: > Ngx_list_t have create api but no free_list api > > Why? > > I wrote my own free_list, is anyone else face this issue? Much like many things in nginx, ngx_list_t structure is an append-only structure, and it is expected to be used as a list of items being added. Most notably, ngx_list_t is used for request headers (these are added to the list when they are parsed), and response headers (these are added when they are generated internally). If you have to remove an item for some reason (which shouldn't be common case for legitimate usage, but might happen to be needed occasionally), the common approach is to use a "skip" flag in the structures being listed. For example, response headers are cleared by setting the "hash" field to 0, so such headers are ignored by the code iterating over the list. If you need something more dynamic in your code, ngx_list_t might not be the right structure to use. Something like ngx_queue_t or ngx_rbtree_t might be a better choice. -- Maxim Dounin http://mdounin.ru/ From mailinglist at unix-solution.de Tue Apr 18 12:58:08 2023 From: mailinglist at unix-solution.de (mailinglist at unix-solution.de) Date: Tue, 18 Apr 2023 14:58:08 +0200 Subject: resolver does not work Message-ID: Hello, I have a nginx proxy in front of systemd-nspawn containers. The IP's of the containers are dynamic. When I start nginx *after* the  containers it works. When the IP of the container is changed while nginx is running i get a "Bad Gateway" error. The config looks like: server {     server_name foobar.example.com ...    location / {       resolver 127.0.0.53 valid=10s;       ...       proxy_pass http://container;    } } nginx is 1.1.18 so it should work as documented in http://nginx.org/en/docs/http/ngx_http_core_module.html#resolver The workaround there https://stackoverflow.com/questions/42720618/docker-nginx-stopped-emerg-11-host-not-found-in-upstream/52319161#52319161 doesn't work. I have also try to config a upstream backend and the resolver in the server part or in the http part. The errors are: "upstream timed out" or "container could not be resolved (3: Host not found)" Whats wrong there? Best Regards From y.abadi at f5.com Tue Apr 18 15:12:08 2023 From: y.abadi at f5.com (Yuval Abadi) Date: Tue, 18 Apr 2023 15:12:08 +0000 Subject: ngx_list_free In-Reply-To: References: Message-ID: Thanks I just need list not queue, And I want to free the whole list , not one node. -----Original Message----- From: nginx On Behalf Of Maxim Dounin Sent: Tuesday, 18 April 2023 15:36 To: Yuval Abadi via nginx Subject: Re: ngx_list_free EXTERNAL MAIL: nginx-bounces at nginx.org Hello! On Tue, Apr 18, 2023 at 06:14:46AM +0000, Yuval Abadi via nginx wrote: > Ngx_list_t have create api but no free_list api > > Why? > > I wrote my own free_list, is anyone else face this issue? Much like many things in nginx, ngx_list_t structure is an append-only structure, and it is expected to be used as a list of items being added. Most notably, ngx_list_t is used for request headers (these are added to the list when they are parsed), and response headers (these are added when they are generated internally). If you have to remove an item for some reason (which shouldn't be common case for legitimate usage, but might happen to be needed occasionally), the common approach is to use a "skip" flag in the structures being listed. For example, response headers are cleared by setting the "hash" field to 0, so such headers are ignored by the code iterating over the list. If you need something more dynamic in your code, ngx_list_t might not be the right structure to use. Something like ngx_queue_t or ngx_rbtree_t might be a better choice. -- Maxim Dounin http://mdounin.ru/ _______________________________________________ nginx mailing list nginx at nginx.org https://mailman.nginx.org/mailman/listinfo/nginx From sca at andreasschulze.de Tue Apr 18 17:21:59 2023 From: sca at andreasschulze.de (A. Schulze) Date: Tue, 18 Apr 2023 19:21:59 +0200 Subject: resolver does not work In-Reply-To: References: Message-ID: <3badcff9-a7bd-1a1a-4e6c-4e51ce4bcfc8@andreasschulze.de> Am 18.04.23 um 14:58 schrieb mailinglist at unix-solution.de: > nginx is 1.1.18 > Whats wrong there? released in March 2012 couldn't you use a "not so historic" version? Andreas From mdounin at mdounin.ru Tue Apr 18 18:43:20 2023 From: mdounin at mdounin.ru (Maxim Dounin) Date: Tue, 18 Apr 2023 21:43:20 +0300 Subject: ngx_list_free In-Reply-To: References: Message-ID: Hello! On Tue, Apr 18, 2023 at 03:12:08PM +0000, Yuval Abadi via nginx wrote: > Thanks > > I just need list not queue, Queue is a double-linked list. > And I want to free the whole list , not one node. In nginx, memory allocations use pools, and in most cases you cannot free individual allocations. The only options is to destroy the whole pool. For example, this naturally works with requests: all allocations related to a request are done from the request pool, and are automatically freed when the request is freed and its pool is destroyed. See here for more details about memory pools: http://nginx.org/en/docs/dev/development_guide.html#pool -- Maxim Dounin http://mdounin.ru/ From mailinglist at unix-solution.de Tue Apr 18 19:04:47 2023 From: mailinglist at unix-solution.de (basti) Date: Tue, 18 Apr 2023 21:04:47 +0200 Subject: resolver does not work In-Reply-To: <3badcff9-a7bd-1a1a-4e6c-4e51ce4bcfc8@andreasschulze.de> References: <3badcff9-a7bd-1a1a-4e6c-4e51ce4bcfc8@andreasschulze.de> Message-ID: Sorry, my mistake. 1.18.0 debian11 is installed. Am 18.04.23 um 19:21 schrieb A. Schulze via nginx: > > > Am 18.04.23 um 14:58 schrieb mailinglist at unix-solution.de: >> nginx is 1.1.18 >> Whats wrong there? > released in March 2012 > > couldn't you use a "not so historic" version? > > Andreas > _______________________________________________ > nginx mailing list > nginx at nginx.org > https://mailman.nginx.org/mailman/listinfo/nginx From mdounin at mdounin.ru Tue Apr 18 19:29:24 2023 From: mdounin at mdounin.ru (Maxim Dounin) Date: Tue, 18 Apr 2023 22:29:24 +0300 Subject: resolver does not work In-Reply-To: References: Message-ID: Hello! On Tue, Apr 18, 2023 at 02:58:08PM +0200, mailinglist at unix-solution.de wrote: > Hello, > I have a nginx proxy in front of systemd-nspawn containers. > The IP's of the containers are dynamic. > > When I start nginx *after* the  containers it works. > When the IP of the container is changed while nginx is running i get a > "Bad Gateway" error. > > The config looks like: > > server { >     server_name foobar.example.com > ... >    location / { >       resolver 127.0.0.53 valid=10s; >       ... >       proxy_pass http://container; >    } > } > > nginx is 1.1.18 so it should work as documented in > http://nginx.org/en/docs/http/ngx_http_core_module.html#resolver > The workaround there > https://stackoverflow.com/questions/42720618/docker-nginx-stopped-emerg-11-host-not-found-in-upstream/52319161#52319161 > doesn't work. > > I have also try to config a upstream backend and the resolver in the > server part or in the http part. > The errors are: "upstream timed out" or "container could not be resolved > (3: Host not found)" > > Whats wrong there? The "resolver" directive is only used when the "proxy_pass" directive contain variables, and therefore nginx isn't able to determine upstream addresses when parsing configuration. Quoting http://nginx.org/r/proxy_pass: : Parameter value can contain variables. In this case, if an : address is specified as a domain name, the name is searched among : the described server groups, and, if not found, is determined : using a resolver. The "workaround", however, should work fine. Something like this should be enough:       resolver 127.0.0.53 valid=10s; set $upstream "http://container";       proxy_pass $upstream; Note though that there should be an actual DNS name which can be resolved with the DNS server configured with the "resolver" directive. The "container could not be resolved (3: Host not found)" error suggests that your DNS server does not return anything for the name - you may want to dig further into systemd to find out why it doesn't return anything. -- Maxim Dounin http://mdounin.ru/ From jordanc.carter at outlook.com Tue Apr 18 19:30:26 2023 From: jordanc.carter at outlook.com (J Carter) Date: Tue, 18 Apr 2023 20:30:26 +0100 Subject: resolver does not work In-Reply-To: References: Message-ID: Hi, On 18/04/2023 13:58, mailinglist at unix-solution.de wrote: > Hello, > I have a nginx proxy in front of systemd-nspawn containers. > The IP's of the containers are dynamic. > > When I start nginx *after* the  containers it works. > When the IP of the container is changed while nginx is running i get a > "Bad Gateway" erro > > The config looks like: > > server { >     server_name foobar.example.com > ... >    location / { >       resolver 127.0.0.53 valid=10s; >       ... >       proxy_pass http://container; You need to use a variable in the proxy_pass here instead to do dynamic proxy pass. This force nginx to re-resolve the hostname. The variable's value should be set the target hostname (looks like it's 'containers' from your config). something like set $container_hostname 'containers'; proxy_pass http://$containers_hostname; Note, you can't target an upstream server group with this technique - it has to be a hostname that the dns resolver returns. If you need more advanced re-resolving, such as the ability to use upstream server groups and resolve servers within it, NGINX Plus has this feature. In fact the patches from NGINX Plus that do the dynamic re-resolving are already on the devel mailing list - just not integrated. https://mailman.nginx.org/pipermail/nginx-devel/2023-February/4MCLSVRK7EX6DNKHFZN6CA4SKZUSA3GA.html So it can also be obtained by comping from source with that set of patches applied. This is another alternative upstream resolver - although not as good, as it requires requests to initiate a re-resolve. https://www.nginx.com/resources/wiki/modules/domain_resolve/ >    } > } > > nginx is 1.1.18 so it should work as documented in > http://nginx.org/en/docs/http/ngx_http_core_module.html#resolver > The workaround there > https://stackoverflow.com/questions/42720618/docker-nginx-stopped-emerg-11-host-not-found-in-upstream/52319161#52319161 doesn't work. > > I have also try to config a upstream backend and the resolver in the > server part or in the http part. > The errors are: "upstream timed out" or "container could not be resolved > (3: Host not found)" > > Whats wrong there? > Best Regards > _______________________________________________ > nginx mailing list > nginx at nginx.org > https://mailman.nginx.org/mailman/listinfo/nginx From mailinglist at unix-solution.de Tue Apr 18 20:25:09 2023 From: mailinglist at unix-solution.de (basti) Date: Tue, 18 Apr 2023 22:25:09 +0200 Subject: resolver does not work In-Reply-To: References: Message-ID: Hello Maxim, that does not work for me. root at tower:~# resolvectl query icinga2 icinga2: 192.168.145.217 -- link: ve-icinga2 -- Information acquired via protocol LLMNR/IPv4 in 105.7ms. -- Data is authenticated: no root at tower:~# getent hosts icinga2 192.168.145.217 icinga2 root at tower:~# cat /etc/resolv.conf nameserver 127.0.0.53 options edns0 root at tower:~# location / { proxy_redirect off; proxy_set_header Host $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Host $remote_addr; proxy_set_header X-Real-IP $remote_addr; # proxy_pass https://icinga2; resolver 127.0.0.53 valid=10s; set $upstream "https://icinga2"; proxy_pass $upstream; # WebSocket support proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } 2023/04/18 22:16:28 [error] 779163#779163: *26641 icinga2 could not be resolved (3: Host not found), 503 bad gateway Am 18.04.23 um 21:29 schrieb Maxim Dounin: > Hello! > > On Tue, Apr 18, 2023 at 02:58:08PM +0200, mailinglist at unix-solution.de wrote: > >> Hello, >> I have a nginx proxy in front of systemd-nspawn containers. >> The IP's of the containers are dynamic. >> >> When I start nginx *after* the  containers it works. >> When the IP of the container is changed while nginx is running i get a >> "Bad Gateway" error. >> >> The config looks like: >> >> server { >>     server_name foobar.example.com >> ... >>    location / { >>       resolver 127.0.0.53 valid=10s; >>       ... >>       proxy_pass http://container; >>    } >> } >> >> nginx is 1.1.18 so it should work as documented in >> http://nginx.org/en/docs/http/ngx_http_core_module.html#resolver >> The workaround there >> https://stackoverflow.com/questions/42720618/docker-nginx-stopped-emerg-11-host-not-found-in-upstream/52319161#52319161 >> doesn't work. >> >> I have also try to config a upstream backend and the resolver in the >> server part or in the http part. >> The errors are: "upstream timed out" or "container could not be resolved >> (3: Host not found)" >> >> Whats wrong there? > > The "resolver" directive is only used when the "proxy_pass" > directive contain variables, and therefore nginx isn't able to > determine upstream addresses when parsing configuration. Quoting > http://nginx.org/r/proxy_pass: > > : Parameter value can contain variables. In this case, if an > : address is specified as a domain name, the name is searched among > : the described server groups, and, if not found, is determined > : using a resolver. > > The "workaround", however, should work fine. Something like this > should be enough: > >       resolver 127.0.0.53 valid=10s; > set $upstream "http://container"; >       proxy_pass $upstream; > > Note though that there should be an actual DNS name which can be > resolved with the DNS server configured with the "resolver" > directive. The "container could not be resolved (3: Host not > found)" error suggests that your DNS server does not return > anything for the name - you may want to dig further into systemd > to find out why it doesn't return anything. > From mdounin at mdounin.ru Wed Apr 19 00:51:28 2023 From: mdounin at mdounin.ru (Maxim Dounin) Date: Wed, 19 Apr 2023 03:51:28 +0300 Subject: resolver does not work In-Reply-To: References: Message-ID: Hello! On Tue, Apr 18, 2023 at 10:25:09PM +0200, basti wrote: > Hello Maxim, > > that does not work for me. > > root at tower:~# resolvectl query icinga2 > icinga2: 192.168.145.217 -- link: ve-icinga2 > > -- Information acquired via protocol LLMNR/IPv4 in 105.7ms. > -- Data is authenticated: no > > root at tower:~# getent hosts icinga2 > 192.168.145.217 icinga2 > > root at tower:~# cat /etc/resolv.conf > nameserver 127.0.0.53 > options edns0 > root at tower:~# > And what "nslookup icinga2 127.0.0.53" shows? > location / { > > proxy_redirect off; > proxy_set_header Host $remote_addr; > proxy_set_header X-Forwarded-For $remote_addr; > proxy_set_header X-Forwarded-Host $remote_addr; > proxy_set_header X-Real-IP $remote_addr; > # proxy_pass https://icinga2; > resolver 127.0.0.53 valid=10s; > set $upstream "https://icinga2"; > proxy_pass $upstream; > > # WebSocket support > proxy_http_version 1.1; > proxy_set_header Upgrade $http_upgrade; > proxy_set_header Connection "upgrade"; > } > > 2023/04/18 22:16:28 [error] 779163#779163: *26641 icinga2 could not be > resolved (3: Host not found), As previously mentioned, the message suggests that the name is not available via DNS. This is to be resolved on the systemd side. Unfortunately, I'm not familiar with systemd-nspawn and have no idea how to do it properly and if it's at all possible. -- Maxim Dounin http://mdounin.ru/ From mailinglist at unix-solution.de Wed Apr 19 10:28:49 2023 From: mailinglist at unix-solution.de (basti) Date: Wed, 19 Apr 2023 12:28:49 +0200 Subject: resolver does not work In-Reply-To: References: Message-ID: <4f5facc6-fba5-d728-25c2-6c5345c32273@unix-solution.de> Hello Maxim, I have found. nginx query ipv4 and ipv6 as expected. systemd-resolved return servfail when there is no ipv6. I think it should return nodata. When I set ipv6=off in nginx all is fine. Best Regards, On 19.04.23 02:51, Maxim Dounin wrote: > Hello! > > On Tue, Apr 18, 2023 at 10:25:09PM +0200, basti wrote: > >> Hello Maxim, >> >> that does not work for me. >> >> root at tower:~# resolvectl query icinga2 >> icinga2: 192.168.145.217 -- link: ve-icinga2 >> >> -- Information acquired via protocol LLMNR/IPv4 in 105.7ms. >> -- Data is authenticated: no >> >> root at tower:~# getent hosts icinga2 >> 192.168.145.217 icinga2 >> >> root at tower:~# cat /etc/resolv.conf >> nameserver 127.0.0.53 >> options edns0 >> root at tower:~# >> > > And what "nslookup icinga2 127.0.0.53" shows? > >> location / { >> >> proxy_redirect off; >> proxy_set_header Host $remote_addr; >> proxy_set_header X-Forwarded-For $remote_addr; >> proxy_set_header X-Forwarded-Host $remote_addr; >> proxy_set_header X-Real-IP $remote_addr; >> # proxy_pass https://icinga2; >> resolver 127.0.0.53 valid=10s; >> set $upstream "https://icinga2"; >> proxy_pass $upstream; >> >> # WebSocket support >> proxy_http_version 1.1; >> proxy_set_header Upgrade $http_upgrade; >> proxy_set_header Connection "upgrade"; >> } >> >> 2023/04/18 22:16:28 [error] 779163#779163: *26641 icinga2 could not be >> resolved (3: Host not found), > > As previously mentioned, the message suggests that the name is not > available via DNS. This is to be resolved on the systemd side. > > Unfortunately, I'm not familiar with systemd-nspawn and have no > idea how to do it properly and if it's at all possible. > From preetham.1si12is030 at gmail.com Wed Apr 19 12:02:41 2023 From: preetham.1si12is030 at gmail.com (preetham g) Date: Wed, 19 Apr 2023 17:32:41 +0530 Subject: TLS 1.2 and TLS1.3 extensions supported by nginx Message-ID: Hi Team, I wanted the list of the TLS 1.2 and TLS 1.3 extensions that are currently being supported by the Nginx. Can you please provide the same. Regards Preetham -------------- next part -------------- An HTML attachment was scrubbed... URL: From preetham.1si12is030 at gmail.com Wed Apr 19 12:34:00 2023 From: preetham.1si12is030 at gmail.com (preetham g) Date: Wed, 19 Apr 2023 18:04:00 +0530 Subject: TLS 1.2 and TLS1.3 extensions supported by nginx In-Reply-To: References: Message-ID: If the extensive list is not available here are the specific extensions currently I'm looking for : TLS 1.2 | signed_certificate_timestamp, or sct (0x0012) | [RFC6962] | | encrypt_then_mac (0x0016) | [RFC7366] | | status_request (0x0005) | [RFC6066] | | use_srtp (0x000E) | [RFC5764] | | padding (0x0015) | [RFC7685] | | record_size_limit (0x001C) | [RFC8449] | | trusted_ca_keys (0x0003) | [RFC6066] | | user_mapping (0x0006) | [RFC4681] | | srp (0x000C) | [RFC5054] | | status_request_v2 (0x0011) | [RFC6961] | | session_ticket (0x0023) | [RFC5077] [RFC8447]| TLS 1.3 | signed_certificate_timestamp | [RFC6962] | | status_request (0x0005) | [RFC6066] | | use_srtp (0x000E) | [RFC5764] | | padding (0x0015) | [RFC7685] | | record_size_limit (0x001C) | [RFC8449] | | pre_shared_key (0x0029) | [RFC8446] | | psk_key_exchange_modes (0x002D) | [RFC8446] | | certificate_authorities (0x002F) | [RFC8446] | | oid_filters (0x0030) | [RFC8446] | | post_handshake_auth (0x0031) | [RFC8446] | Thanks and Regards Preetham On Wed, Apr 19, 2023 at 5:32 PM preetham g wrote: > Hi Team, > > I wanted the list of the TLS 1.2 and TLS 1.3 extensions that are currently > being supported by the Nginx. Can you please provide the same. > > Regards > Preetham > -------------- next part -------------- An HTML attachment was scrubbed... URL: From jstimpson at relaypro.com Wed Apr 19 12:57:28 2023 From: jstimpson at relaypro.com (Jesse Stimpson) Date: Wed, 19 Apr 2023 08:57:28 -0400 Subject: Duplicate Content-Length header with same value, recent change in behavior intentional? Message-ID: Hello, I've noticed a recent change in behavior that occurred between releases 1.22.1 and 1.23.4, and I'm unable to find this particular change documented. If an upstream proxy sends a response with duplicate Content-Length headers, both of the same value, nginx 1.22.1 allows the response to be sent to the client, removing the duplicate. However, nginx 1.23.4 (and 1.24.0) responds to the client with a 502. I did not explicitly test with any other versions. I won't try to make any claims on the correctness of either behavior, but it is a change that may affect some workloads. Here is an example response that exhibits the change: """ HTTP/1.1 200 OK Server: http_tcp Content-Length: 12 Content-Length: 12 Connection: Closed Hello World\n """ ------ jstimpson:[~/dev/c/nginx-1.22.1]: curl -i localhost HTTP/1.1 200 OK Server: nginx/1.22.1 Date: Wed, 19 Apr 2023 12:17:05 GMT Content-Length: 12 Connection: keep-alive Hello World ----- jstimpson:[~/dev/c/nginx-1.23.4]: curl -i localhost HTTP/1.1 502 Bad Gateway Server: nginx/1.23.4 Date: Wed, 19 Apr 2023 12:13:09 GMT Content-Type: text/html Content-Length: 497 Connection: keep-alive ETag: "643fd39e-1f1" ...... --------- These tests were done with this simple config, the rest of the conf is defaults. location / { proxy_pass http://localhost:4040; } Is this change intentional? Did I overlook it in the Changelog? Thanks, Jesse -------------- next part -------------- An HTML attachment was scrubbed... URL: From teward at thomas-ward.net Wed Apr 19 13:06:39 2023 From: teward at thomas-ward.net (Thomas Ward) Date: Wed, 19 Apr 2023 13:06:39 +0000 Subject: Duplicate Content-Length header with same value, recent change in behavior intentional? In-Reply-To: References: Message-ID: This sounds like your backend and nginx are both generating the header. NGINX hasn't changed to the point it would create two headers, but if your backend is adding the header as well as nginx then there's your problem. Sent from my Galaxy -------- Original message -------- From: Jesse Stimpson via nginx Date: 4/19/23 08:57 (GMT-05:00) To: nginx at nginx.org Cc: Jesse Stimpson Subject: Duplicate Content-Length header with same value, recent change in behavior intentional? Hello, I've noticed a recent change in behavior that occurred between releases 1.22.1 and 1.23.4, and I'm unable to find this particular change documented. If an upstream proxy sends a response with duplicate Content-Length headers, both of the same value, nginx 1.22.1 allows the response to be sent to the client, removing the duplicate. However, nginx 1.23.4 (and 1.24.0) responds to the client with a 502. I did not explicitly test with any other versions. I won't try to make any claims on the correctness of either behavior, but it is a change that may affect some workloads. Here is an example response that exhibits the change: """ HTTP/1.1 200 OK Server: http_tcp Content-Length: 12 Content-Length: 12 Connection: Closed Hello World\n """ ------ jstimpson:[~/dev/c/nginx-1.22.1]: curl -i localhost HTTP/1.1 200 OK Server: nginx/1.22.1 Date: Wed, 19 Apr 2023 12:17:05 GMT Content-Length: 12 Connection: keep-alive Hello World ----- jstimpson:[~/dev/c/nginx-1.23.4]: curl -i localhost HTTP/1.1 502 Bad Gateway Server: nginx/1.23.4 Date: Wed, 19 Apr 2023 12:13:09 GMT Content-Type: text/html Content-Length: 497 Connection: keep-alive ETag: "643fd39e-1f1" ...... --------- These tests were done with this simple config, the rest of the conf is defaults. location / { proxy_pass http://localhost:4040; } Is this change intentional? Did I overlook it in the Changelog? Thanks, Jesse -------------- next part -------------- An HTML attachment was scrubbed... URL: From jstimpson at relaypro.com Wed Apr 19 13:08:59 2023 From: jstimpson at relaypro.com (Jesse Stimpson) Date: Wed, 19 Apr 2023 09:08:59 -0400 Subject: Duplicate Content-Length header with same value, recent change in behavior intentional? In-Reply-To: References: Message-ID: Yes, apologies for being unclear. Indeed, the upstream proxy is the one generating the duplicate header. My message is primarily concerning the behavior of nginx upon recognizing such a duplicate from the upstream. In order to complete my testing, I wrote an http server as my upstream that purposefully sent duplicate headers. I realize this consider misbehavior of an upstream. On Wed, Apr 19, 2023 at 9:06 AM Thomas Ward wrote: > This sounds like your backend and nginx are both generating the header. > NGINX hasn't changed to the point it would create two headers, but if your > backend is adding the header as well as nginx then there's your problem. > > > > Sent from my Galaxy > > > > -------- Original message -------- > From: Jesse Stimpson via nginx > Date: 4/19/23 08:57 (GMT-05:00) > To: nginx at nginx.org > Cc: Jesse Stimpson > Subject: Duplicate Content-Length header with same value, recent change in > behavior intentional? > > Hello, > > I've noticed a recent change in behavior that occurred between releases > 1.22.1 and 1.23.4, and I'm unable to find this particular change documented. > > If an upstream proxy sends a response with duplicate Content-Length > headers, both of the same value, nginx 1.22.1 allows the response to be > sent to the client, removing the duplicate. However, nginx 1.23.4 (and > 1.24.0) responds to the client with a 502. I did not explicitly test with > any other versions. > > I won't try to make any claims on the correctness of either behavior, but > it is a change that may affect some workloads. > > Here is an example response that exhibits the change: > > """ > HTTP/1.1 200 OK > Server: http_tcp > Content-Length: 12 > Content-Length: 12 > Connection: Closed > > Hello World\n > """ > ------ > > jstimpson:[~/dev/c/nginx-1.22.1]: curl -i localhost > HTTP/1.1 200 OK > Server: nginx/1.22.1 > Date: Wed, 19 Apr 2023 12:17:05 GMT > Content-Length: 12 > Connection: keep-alive > > Hello World > > ----- > > > jstimpson:[~/dev/c/nginx-1.23.4]: curl -i localhost > HTTP/1.1 502 Bad Gateway > Server: nginx/1.23.4 > Date: Wed, 19 Apr 2023 12:13:09 GMT > Content-Type: text/html > Content-Length: 497 > Connection: keep-alive > ETag: "643fd39e-1f1" > > ...... > > > --------- > > These tests were done with this simple config, the rest of the conf is > defaults. > > location / { > proxy_pass http://localhost:4040; > } > > > Is this change intentional? Did I overlook it in the Changelog? > > Thanks, > Jesse > -------------- next part -------------- An HTML attachment was scrubbed... URL: From teward at thomas-ward.net Wed Apr 19 13:14:25 2023 From: teward at thomas-ward.net (Thomas Ward) Date: Wed, 19 Apr 2023 13:14:25 +0000 Subject: Duplicate Content-Length header with same value, recent change in behavior intentional? In-Reply-To: References: Message-ID: I don't think NGINX has any default duplicate header handing and hasn't really. My guess is that you've simply not seen this behavior in the past. You can suppress the backend header: proxy_hide_header Content-Length; Note that the behavior hasnt changed and only *certain* headers remain default-hidden from the backend - I don't believe Content-Length was ever one of them. Sent from my Galaxy -------- Original message -------- From: Jesse Stimpson Date: 4/19/23 09:09 (GMT-05:00) To: Thomas Ward Cc: nginx at nginx.org Subject: Re: Duplicate Content-Length header with same value, recent change in behavior intentional? Yes, apologies for being unclear. Indeed, the upstream proxy is the one generating the duplicate header. My message is primarily concerning the behavior of nginx upon recognizing such a duplicate from the upstream. In order to complete my testing, I wrote an http server as my upstream that purposefully sent duplicate headers. I realize this consider misbehavior of an upstream. On Wed, Apr 19, 2023 at 9:06 AM Thomas Ward > wrote: This sounds like your backend and nginx are both generating the header. NGINX hasn't changed to the point it would create two headers, but if your backend is adding the header as well as nginx then there's your problem. Sent from my Galaxy -------- Original message -------- From: Jesse Stimpson via nginx > Date: 4/19/23 08:57 (GMT-05:00) To: nginx at nginx.org Cc: Jesse Stimpson > Subject: Duplicate Content-Length header with same value, recent change in behavior intentional? Hello, I've noticed a recent change in behavior that occurred between releases 1.22.1 and 1.23.4, and I'm unable to find this particular change documented. If an upstream proxy sends a response with duplicate Content-Length headers, both of the same value, nginx 1.22.1 allows the response to be sent to the client, removing the duplicate. However, nginx 1.23.4 (and 1.24.0) responds to the client with a 502. I did not explicitly test with any other versions. I won't try to make any claims on the correctness of either behavior, but it is a change that may affect some workloads. Here is an example response that exhibits the change: """ HTTP/1.1 200 OK Server: http_tcp Content-Length: 12 Content-Length: 12 Connection: Closed Hello World\n """ ------ jstimpson:[~/dev/c/nginx-1.22.1]: curl -i localhost HTTP/1.1 200 OK Server: nginx/1.22.1 Date: Wed, 19 Apr 2023 12:17:05 GMT Content-Length: 12 Connection: keep-alive Hello World ----- jstimpson:[~/dev/c/nginx-1.23.4]: curl -i localhost HTTP/1.1 502 Bad Gateway Server: nginx/1.23.4 Date: Wed, 19 Apr 2023 12:13:09 GMT Content-Type: text/html Content-Length: 497 Connection: keep-alive ETag: "643fd39e-1f1" ...... --------- These tests were done with this simple config, the rest of the conf is defaults. location / { proxy_pass http://localhost:4040; } Is this change intentional? Did I overlook it in the Changelog? Thanks, Jesse -------------- next part -------------- An HTML attachment was scrubbed... URL: From mdounin at mdounin.ru Wed Apr 19 18:52:21 2023 From: mdounin at mdounin.ru (Maxim Dounin) Date: Wed, 19 Apr 2023 21:52:21 +0300 Subject: Duplicate Content-Length header with same value, recent change in behavior intentional? In-Reply-To: References: Message-ID: Hello! On Wed, Apr 19, 2023 at 08:57:28AM -0400, Jesse Stimpson via nginx wrote: > I've noticed a recent change in behavior that occurred between releases > 1.22.1 and 1.23.4, and I'm unable to find this particular change documented. > > If an upstream proxy sends a response with duplicate Content-Length > headers, both of the same value, nginx 1.22.1 allows the response to be > sent to the client, removing the duplicate. However, nginx 1.23.4 (and > 1.24.0) responds to the client with a 502. I did not explicitly test with > any other versions. > > I won't try to make any claims on the correctness of either behavior, but > it is a change that may affect some workloads. [...] > Is this change intentional? Did I overlook it in the Changelog? Yes, it is. It is part of a large work to implement proper handling of multiple header lines with the same name, as done in nginx 1.23.0. The particular commit is: http://hg.nginx.org/nginx/rev/2bf7792c262e The particular modification isn't in the change log as the upstream response in question is obviously invalid and should never be accepted in the first place, and the change is more or less a minor cleanup work. -- Maxim Dounin http://mdounin.ru/ From preetham.1si12is030 at gmail.com Fri Apr 21 11:50:51 2023 From: preetham.1si12is030 at gmail.com (preetham g) Date: Fri, 21 Apr 2023 17:20:51 +0530 Subject: TLS 1.2 and TLS1.3 extensions supported by nginx In-Reply-To: References: Message-ID: Hi Team, Can you please look into the below request about the TLS extensions? At least need a confirmation about whether the below ones are supported by Nginx or not. Please consider this a high priority. encrypt_then_mac (0x0016) use_srtp (0x000E) certificate_authorities post_handshake_auth Thanks and regards Preetham On Wed, Apr 19, 2023 at 6:04 PM preetham g wrote: > If the extensive list is not available here are the specific extensions > currently I'm looking for : > > TLS 1.2 > > | signed_certificate_timestamp, or sct (0x0012) | [RFC6962] | > | encrypt_then_mac (0x0016) | [RFC7366] > | > | status_request (0x0005) | [RFC6066] > | > | use_srtp (0x000E) | > [RFC5764] | > | padding (0x0015) | > [RFC7685] | > | record_size_limit (0x001C) | [RFC8449] > | > | trusted_ca_keys (0x0003) | [RFC6066] > | > | user_mapping (0x0006) | [RFC4681] > | > | srp (0x000C) | > [RFC5054] | > | status_request_v2 (0x0011) | [RFC6961] > | > | session_ticket (0x0023) | [RFC5077] > [RFC8447]| > > > TLS 1.3 > > > | signed_certificate_timestamp | [RFC6962] | > | status_request (0x0005) | [RFC6066] | > | use_srtp (0x000E) | [RFC5764] | > | padding (0x0015) | [RFC7685] | > | record_size_limit (0x001C) | [RFC8449] | > | pre_shared_key (0x0029) | [RFC8446] | > | psk_key_exchange_modes (0x002D) | [RFC8446] | > | certificate_authorities (0x002F) | [RFC8446] | > | oid_filters (0x0030) | [RFC8446] | > | post_handshake_auth (0x0031) | [RFC8446] | > > Thanks and Regards > Preetham > > On Wed, Apr 19, 2023 at 5:32 PM preetham g > wrote: > >> Hi Team, >> >> I wanted the list of the TLS 1.2 and TLS 1.3 extensions that are >> currently being supported by the Nginx. Can you please provide the same. >> >> Regards >> Preetham >> > -------------- next part -------------- An HTML attachment was scrubbed... URL: From noloader at gmail.com Fri Apr 21 13:34:21 2023 From: noloader at gmail.com (Jeffrey Walton) Date: Fri, 21 Apr 2023 09:34:21 -0400 Subject: TLS 1.2 and TLS1.3 extensions supported by nginx In-Reply-To: References: Message-ID: On Wed, Apr 19, 2023 at 8:03 AM preetham g wrote: > > I wanted the list of the TLS 1.2 and TLS 1.3 extensions that are currently being supported by the Nginx. Can you please provide the same. > Nginx uses OpenSSL for TLS. You may want to ask the OpenSSL folks. Be sure to tell them which version of OpenSSL you are using. Jeff From wolfmart at hotmail.com Tue Apr 25 22:20:12 2023 From: wolfmart at hotmail.com (Martin Wolf) Date: Tue, 25 Apr 2023 22:20:12 +0000 Subject: Adding 3rd party module not taking effect Message-ID: Hello, I tried to add a third part module "fair balancing", but it seems to be not properly added: Error log: 2023/04/25 17:14:45 [emerg] 34510#0: unknown directive "fair" in /usr/local/nginx/conf/conf.d/nginx-upstream-fair.conf:2... nginx-upstream-fair.conf upstream backend { fair; server 192.168.25.211:80; server 192.168.25.212:80; server 192.168.25.213:80; server 192.168.25.214:80; } : # nginx -V nginx version: nginx/1.23.4 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) configure arguments: --without-http_rewrite_module --without-http_gzip_module --add-module=/usr/local/nginx/modules/nginx_upstream_check_module-master steps: $ ./configure --with-http_ssl_module --add-module=/usr/local/nginx/modules/nginx-upstream-fair-master $ make $ sudo make install Attached you will find the output. Thank you. -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- make -f objs/Makefile install make[1]: Entering directory `/home/ece700/build/nginx-1.23.4' test -d '/usr/local/nginx' || mkdir -p '/usr/local/nginx' test -d '/usr/local/nginx/sbin' \ || mkdir -p '/usr/local/nginx/sbin' test ! -f '/usr/local/nginx/sbin/nginx' \ || mv '/usr/local/nginx/sbin/nginx' \ '/usr/local/nginx/sbin/nginx.old' cp objs/nginx '/usr/local/nginx/sbin/nginx' test -d '/usr/local/nginx/conf' \ || mkdir -p '/usr/local/nginx/conf' cp conf/koi-win '/usr/local/nginx/conf' cp conf/koi-utf '/usr/local/nginx/conf' cp conf/win-utf '/usr/local/nginx/conf' test -f '/usr/local/nginx/conf/mime.types' \ || cp conf/mime.types '/usr/local/nginx/conf' cp conf/mime.types '/usr/local/nginx/conf/mime.types.default' test -f '/usr/local/nginx/conf/fastcgi_params' \ || cp conf/fastcgi_params '/usr/local/nginx/conf' cp conf/fastcgi_params \ '/usr/local/nginx/conf/fastcgi_params.default' test -f '/usr/local/nginx/conf/fastcgi.conf' \ || cp conf/fastcgi.conf '/usr/local/nginx/conf' cp conf/fastcgi.conf '/usr/local/nginx/conf/fastcgi.conf.default' test -f '/usr/local/nginx/conf/uwsgi_params' \ || cp conf/uwsgi_params '/usr/local/nginx/conf' cp conf/uwsgi_params \ '/usr/local/nginx/conf/uwsgi_params.default' test -f '/usr/local/nginx/conf/scgi_params' \ || cp conf/scgi_params '/usr/local/nginx/conf' cp conf/scgi_params \ '/usr/local/nginx/conf/scgi_params.default' test -f '/usr/local/nginx/conf/nginx.conf' \ || cp conf/nginx.conf '/usr/local/nginx/conf/nginx.conf' cp conf/nginx.conf '/usr/local/nginx/conf/nginx.conf.default' test -d '/usr/local/nginx/logs' \ || mkdir -p '/usr/local/nginx/logs' test -d '/usr/local/nginx/logs' \ || mkdir -p '/usr/local/nginx/logs' test -d '/usr/local/nginx/html' \ || cp -R html '/usr/local/nginx' test -d '/usr/local/nginx/logs' \ || mkdir -p '/usr/local/nginx/logs' make[1]: Leaving directory `/home/ece700/build/nginx-1.23.4' -------------- next part -------------- make -f objs/Makefile make[1]: Entering directory `/home/ece700/build/nginx-1.23.4' cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/core/nginx.o \ src/core/nginx.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/core/ngx_log.o \ src/core/ngx_log.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/core/ngx_palloc.o \ src/core/ngx_palloc.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/core/ngx_array.o \ src/core/ngx_array.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/core/ngx_list.o \ src/core/ngx_list.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/core/ngx_hash.o \ src/core/ngx_hash.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/core/ngx_buf.o \ src/core/ngx_buf.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/core/ngx_queue.o \ src/core/ngx_queue.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/core/ngx_output_chain.o \ src/core/ngx_output_chain.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/core/ngx_string.o \ src/core/ngx_string.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/core/ngx_parse.o \ src/core/ngx_parse.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/core/ngx_parse_time.o \ src/core/ngx_parse_time.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/core/ngx_inet.o \ src/core/ngx_inet.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/core/ngx_file.o \ src/core/ngx_file.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/core/ngx_crc32.o \ src/core/ngx_crc32.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/core/ngx_murmurhash.o \ src/core/ngx_murmurhash.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/core/ngx_md5.o \ src/core/ngx_md5.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/core/ngx_sha1.o \ src/core/ngx_sha1.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/core/ngx_rbtree.o \ src/core/ngx_rbtree.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/core/ngx_radix_tree.o \ src/core/ngx_radix_tree.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/core/ngx_slab.o \ src/core/ngx_slab.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/core/ngx_times.o \ src/core/ngx_times.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/core/ngx_shmtx.o \ src/core/ngx_shmtx.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/core/ngx_connection.o \ src/core/ngx_connection.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/core/ngx_cycle.o \ src/core/ngx_cycle.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/core/ngx_spinlock.o \ src/core/ngx_spinlock.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/core/ngx_rwlock.o \ src/core/ngx_rwlock.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/core/ngx_cpuinfo.o \ src/core/ngx_cpuinfo.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/core/ngx_conf_file.o \ src/core/ngx_conf_file.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/core/ngx_module.o \ src/core/ngx_module.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/core/ngx_resolver.o \ src/core/ngx_resolver.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/core/ngx_open_file_cache.o \ src/core/ngx_open_file_cache.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/core/ngx_crypt.o \ src/core/ngx_crypt.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/core/ngx_proxy_protocol.o \ src/core/ngx_proxy_protocol.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/core/ngx_syslog.o \ src/core/ngx_syslog.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/event/ngx_event.o \ src/event/ngx_event.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/event/ngx_event_timer.o \ src/event/ngx_event_timer.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/event/ngx_event_posted.o \ src/event/ngx_event_posted.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/event/ngx_event_accept.o \ src/event/ngx_event_accept.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/event/ngx_event_udp.o \ src/event/ngx_event_udp.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/event/ngx_event_connect.o \ src/event/ngx_event_connect.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/event/ngx_event_pipe.o \ src/event/ngx_event_pipe.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/os/unix/ngx_time.o \ src/os/unix/ngx_time.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/os/unix/ngx_errno.o \ src/os/unix/ngx_errno.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/os/unix/ngx_alloc.o \ src/os/unix/ngx_alloc.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/os/unix/ngx_files.o \ src/os/unix/ngx_files.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/os/unix/ngx_socket.o \ src/os/unix/ngx_socket.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/os/unix/ngx_recv.o \ src/os/unix/ngx_recv.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/os/unix/ngx_readv_chain.o \ src/os/unix/ngx_readv_chain.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/os/unix/ngx_udp_recv.o \ src/os/unix/ngx_udp_recv.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/os/unix/ngx_send.o \ src/os/unix/ngx_send.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/os/unix/ngx_writev_chain.o \ src/os/unix/ngx_writev_chain.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/os/unix/ngx_udp_send.o \ src/os/unix/ngx_udp_send.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/os/unix/ngx_udp_sendmsg_chain.o \ src/os/unix/ngx_udp_sendmsg_chain.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/os/unix/ngx_channel.o \ src/os/unix/ngx_channel.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/os/unix/ngx_shmem.o \ src/os/unix/ngx_shmem.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/os/unix/ngx_process.o \ src/os/unix/ngx_process.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/os/unix/ngx_daemon.o \ src/os/unix/ngx_daemon.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/os/unix/ngx_setaffinity.o \ src/os/unix/ngx_setaffinity.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/os/unix/ngx_setproctitle.o \ src/os/unix/ngx_setproctitle.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/os/unix/ngx_posix_init.o \ src/os/unix/ngx_posix_init.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/os/unix/ngx_user.o \ src/os/unix/ngx_user.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/os/unix/ngx_dlopen.o \ src/os/unix/ngx_dlopen.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/os/unix/ngx_process_cycle.o \ src/os/unix/ngx_process_cycle.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/os/unix/ngx_linux_init.o \ src/os/unix/ngx_linux_init.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/event/modules/ngx_epoll_module.o \ src/event/modules/ngx_epoll_module.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/os/unix/ngx_linux_sendfile_chain.o \ src/os/unix/ngx_linux_sendfile_chain.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/event/ngx_event_openssl.o \ src/event/ngx_event_openssl.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/event/ngx_event_openssl_stapling.o \ src/event/ngx_event_openssl_stapling.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/src/core/ngx_regex.o \ src/core/ngx_regex.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/ngx_http.o \ src/http/ngx_http.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/ngx_http_core_module.o \ src/http/ngx_http_core_module.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/ngx_http_special_response.o \ src/http/ngx_http_special_response.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/ngx_http_request.o \ src/http/ngx_http_request.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/ngx_http_parse.o \ src/http/ngx_http_parse.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/modules/ngx_http_log_module.o \ src/http/modules/ngx_http_log_module.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/ngx_http_request_body.o \ src/http/ngx_http_request_body.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/ngx_http_variables.o \ src/http/ngx_http_variables.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/ngx_http_script.o \ src/http/ngx_http_script.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/ngx_http_upstream.o \ src/http/ngx_http_upstream.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/ngx_http_upstream_round_robin.o \ src/http/ngx_http_upstream_round_robin.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/ngx_http_file_cache.o \ src/http/ngx_http_file_cache.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/ngx_http_write_filter_module.o \ src/http/ngx_http_write_filter_module.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/ngx_http_header_filter_module.o \ src/http/ngx_http_header_filter_module.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/modules/ngx_http_chunked_filter_module.o \ src/http/modules/ngx_http_chunked_filter_module.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/modules/ngx_http_range_filter_module.o \ src/http/modules/ngx_http_range_filter_module.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/modules/ngx_http_gzip_filter_module.o \ src/http/modules/ngx_http_gzip_filter_module.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/ngx_http_postpone_filter_module.o \ src/http/ngx_http_postpone_filter_module.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/modules/ngx_http_ssi_filter_module.o \ src/http/modules/ngx_http_ssi_filter_module.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/modules/ngx_http_charset_filter_module.o \ src/http/modules/ngx_http_charset_filter_module.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/modules/ngx_http_userid_filter_module.o \ src/http/modules/ngx_http_userid_filter_module.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/modules/ngx_http_headers_filter_module.o \ src/http/modules/ngx_http_headers_filter_module.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/ngx_http_copy_filter_module.o \ src/http/ngx_http_copy_filter_module.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/modules/ngx_http_not_modified_filter_module.o \ src/http/modules/ngx_http_not_modified_filter_module.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/modules/ngx_http_static_module.o \ src/http/modules/ngx_http_static_module.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/modules/ngx_http_autoindex_module.o \ src/http/modules/ngx_http_autoindex_module.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/modules/ngx_http_index_module.o \ src/http/modules/ngx_http_index_module.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/modules/ngx_http_mirror_module.o \ src/http/modules/ngx_http_mirror_module.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/modules/ngx_http_try_files_module.o \ src/http/modules/ngx_http_try_files_module.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/modules/ngx_http_auth_basic_module.o \ src/http/modules/ngx_http_auth_basic_module.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/modules/ngx_http_access_module.o \ src/http/modules/ngx_http_access_module.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/modules/ngx_http_limit_conn_module.o \ src/http/modules/ngx_http_limit_conn_module.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/modules/ngx_http_limit_req_module.o \ src/http/modules/ngx_http_limit_req_module.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/modules/ngx_http_geo_module.o \ src/http/modules/ngx_http_geo_module.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/modules/ngx_http_map_module.o \ src/http/modules/ngx_http_map_module.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/modules/ngx_http_split_clients_module.o \ src/http/modules/ngx_http_split_clients_module.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/modules/ngx_http_referer_module.o \ src/http/modules/ngx_http_referer_module.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/modules/ngx_http_rewrite_module.o \ src/http/modules/ngx_http_rewrite_module.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/modules/ngx_http_ssl_module.o \ src/http/modules/ngx_http_ssl_module.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/modules/ngx_http_proxy_module.o \ src/http/modules/ngx_http_proxy_module.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/modules/ngx_http_fastcgi_module.o \ src/http/modules/ngx_http_fastcgi_module.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/modules/ngx_http_uwsgi_module.o \ src/http/modules/ngx_http_uwsgi_module.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/modules/ngx_http_scgi_module.o \ src/http/modules/ngx_http_scgi_module.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/modules/ngx_http_memcached_module.o \ src/http/modules/ngx_http_memcached_module.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/modules/ngx_http_empty_gif_module.o \ src/http/modules/ngx_http_empty_gif_module.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/modules/ngx_http_browser_module.o \ src/http/modules/ngx_http_browser_module.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/modules/ngx_http_upstream_hash_module.o \ src/http/modules/ngx_http_upstream_hash_module.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/modules/ngx_http_upstream_ip_hash_module.o \ src/http/modules/ngx_http_upstream_ip_hash_module.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/modules/ngx_http_upstream_least_conn_module.o \ src/http/modules/ngx_http_upstream_least_conn_module.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/modules/ngx_http_upstream_random_module.o \ src/http/modules/ngx_http_upstream_random_module.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/modules/ngx_http_upstream_keepalive_module.o \ src/http/modules/ngx_http_upstream_keepalive_module.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/src/http/modules/ngx_http_upstream_zone_module.o \ src/http/modules/ngx_http_upstream_zone_module.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \ -o objs/addon/nginx-upstream-fair-master/ngx_http_upstream_fair_module.o \ /usr/local/nginx/modules/nginx-upstream-fair-master/ngx_http_upstream_fair_module.c cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \ -o objs/ngx_modules.o \ objs/ngx_modules.c cc -o objs/nginx \ objs/src/core/nginx.o \ objs/src/core/ngx_log.o \ objs/src/core/ngx_palloc.o \ objs/src/core/ngx_array.o \ objs/src/core/ngx_list.o \ objs/src/core/ngx_hash.o \ objs/src/core/ngx_buf.o \ objs/src/core/ngx_queue.o \ objs/src/core/ngx_output_chain.o \ objs/src/core/ngx_string.o \ objs/src/core/ngx_parse.o \ objs/src/core/ngx_parse_time.o \ objs/src/core/ngx_inet.o \ objs/src/core/ngx_file.o \ objs/src/core/ngx_crc32.o \ objs/src/core/ngx_murmurhash.o \ objs/src/core/ngx_md5.o \ objs/src/core/ngx_sha1.o \ objs/src/core/ngx_rbtree.o \ objs/src/core/ngx_radix_tree.o \ objs/src/core/ngx_slab.o \ objs/src/core/ngx_times.o \ objs/src/core/ngx_shmtx.o \ objs/src/core/ngx_connection.o \ objs/src/core/ngx_cycle.o \ objs/src/core/ngx_spinlock.o \ objs/src/core/ngx_rwlock.o \ objs/src/core/ngx_cpuinfo.o \ objs/src/core/ngx_conf_file.o \ objs/src/core/ngx_module.o \ objs/src/core/ngx_resolver.o \ objs/src/core/ngx_open_file_cache.o \ objs/src/core/ngx_crypt.o \ objs/src/core/ngx_proxy_protocol.o \ objs/src/core/ngx_syslog.o \ objs/src/event/ngx_event.o \ objs/src/event/ngx_event_timer.o \ objs/src/event/ngx_event_posted.o \ objs/src/event/ngx_event_accept.o \ objs/src/event/ngx_event_udp.o \ objs/src/event/ngx_event_connect.o \ objs/src/event/ngx_event_pipe.o \ objs/src/os/unix/ngx_time.o \ objs/src/os/unix/ngx_errno.o \ objs/src/os/unix/ngx_alloc.o \ objs/src/os/unix/ngx_files.o \ objs/src/os/unix/ngx_socket.o \ objs/src/os/unix/ngx_recv.o \ objs/src/os/unix/ngx_readv_chain.o \ objs/src/os/unix/ngx_udp_recv.o \ objs/src/os/unix/ngx_send.o \ objs/src/os/unix/ngx_writev_chain.o \ objs/src/os/unix/ngx_udp_send.o \ objs/src/os/unix/ngx_udp_sendmsg_chain.o \ objs/src/os/unix/ngx_channel.o \ objs/src/os/unix/ngx_shmem.o \ objs/src/os/unix/ngx_process.o \ objs/src/os/unix/ngx_daemon.o \ objs/src/os/unix/ngx_setaffinity.o \ objs/src/os/unix/ngx_setproctitle.o \ objs/src/os/unix/ngx_posix_init.o \ objs/src/os/unix/ngx_user.o \ objs/src/os/unix/ngx_dlopen.o \ objs/src/os/unix/ngx_process_cycle.o \ objs/src/os/unix/ngx_linux_init.o \ objs/src/event/modules/ngx_epoll_module.o \ objs/src/os/unix/ngx_linux_sendfile_chain.o \ objs/src/event/ngx_event_openssl.o \ objs/src/event/ngx_event_openssl_stapling.o \ objs/src/core/ngx_regex.o \ objs/src/http/ngx_http.o \ objs/src/http/ngx_http_core_module.o \ objs/src/http/ngx_http_special_response.o \ objs/src/http/ngx_http_request.o \ objs/src/http/ngx_http_parse.o \ objs/src/http/modules/ngx_http_log_module.o \ objs/src/http/ngx_http_request_body.o \ objs/src/http/ngx_http_variables.o \ objs/src/http/ngx_http_script.o \ objs/src/http/ngx_http_upstream.o \ objs/src/http/ngx_http_upstream_round_robin.o \ objs/src/http/ngx_http_file_cache.o \ objs/src/http/ngx_http_write_filter_module.o \ objs/src/http/ngx_http_header_filter_module.o \ objs/src/http/modules/ngx_http_chunked_filter_module.o \ objs/src/http/modules/ngx_http_range_filter_module.o \ objs/src/http/modules/ngx_http_gzip_filter_module.o \ objs/src/http/ngx_http_postpone_filter_module.o \ objs/src/http/modules/ngx_http_ssi_filter_module.o \ objs/src/http/modules/ngx_http_charset_filter_module.o \ objs/src/http/modules/ngx_http_userid_filter_module.o \ objs/src/http/modules/ngx_http_headers_filter_module.o \ objs/src/http/ngx_http_copy_filter_module.o \ objs/src/http/modules/ngx_http_not_modified_filter_module.o \ objs/src/http/modules/ngx_http_static_module.o \ objs/src/http/modules/ngx_http_autoindex_module.o \ objs/src/http/modules/ngx_http_index_module.o \ objs/src/http/modules/ngx_http_mirror_module.o \ objs/src/http/modules/ngx_http_try_files_module.o \ objs/src/http/modules/ngx_http_auth_basic_module.o \ objs/src/http/modules/ngx_http_access_module.o \ objs/src/http/modules/ngx_http_limit_conn_module.o \ objs/src/http/modules/ngx_http_limit_req_module.o \ objs/src/http/modules/ngx_http_geo_module.o \ objs/src/http/modules/ngx_http_map_module.o \ objs/src/http/modules/ngx_http_split_clients_module.o \ objs/src/http/modules/ngx_http_referer_module.o \ objs/src/http/modules/ngx_http_rewrite_module.o \ objs/src/http/modules/ngx_http_ssl_module.o \ objs/src/http/modules/ngx_http_proxy_module.o \ objs/src/http/modules/ngx_http_fastcgi_module.o \ objs/src/http/modules/ngx_http_uwsgi_module.o \ objs/src/http/modules/ngx_http_scgi_module.o \ objs/src/http/modules/ngx_http_memcached_module.o \ objs/src/http/modules/ngx_http_empty_gif_module.o \ objs/src/http/modules/ngx_http_browser_module.o \ objs/src/http/modules/ngx_http_upstream_hash_module.o \ objs/src/http/modules/ngx_http_upstream_ip_hash_module.o \ objs/src/http/modules/ngx_http_upstream_least_conn_module.o \ objs/src/http/modules/ngx_http_upstream_random_module.o \ objs/src/http/modules/ngx_http_upstream_keepalive_module.o \ objs/src/http/modules/ngx_http_upstream_zone_module.o \ objs/addon/nginx-upstream-fair-master/ngx_http_upstream_fair_module.o \ objs/ngx_modules.o \ -ldl -lpthread -lcrypt -lpcre2-8 -lssl -lcrypto -ldl -lpthread -lz \ -Wl,-E sed -e "s|%%PREFIX%%|/usr/local/nginx|" \ -e "s|%%PID_PATH%%|/usr/local/nginx/logs/nginx.pid|" \ -e "s|%%CONF_PATH%%|/usr/local/nginx/conf/nginx.conf|" \ -e "s|%%ERROR_LOG_PATH%%|/usr/local/nginx/logs/error.log|" \ < man/nginx.8 > objs/nginx.8 make[1]: Leaving directory `/home/ece700/build/nginx-1.23.4' -------------- next part -------------- checking for OS + Linux 3.10.0-1160.88.1.el7.x86_64 x86_64 checking for C compiler ... found + using GNU C compiler + gcc version: 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) checking for gcc -pipe switch ... found checking for -Wl,-E switch ... found checking for gcc builtin atomic operations ... found checking for C99 variadic macros ... found checking for gcc variadic macros ... found checking for gcc builtin 64 bit byteswap ... found checking for unistd.h ... found checking for inttypes.h ... found checking for limits.h ... found checking for sys/filio.h ... not found checking for sys/param.h ... found checking for sys/mount.h ... found checking for sys/statvfs.h ... found checking for crypt.h ... found checking for Linux specific features checking for epoll ... found checking for EPOLLRDHUP ... found checking for EPOLLEXCLUSIVE ... not found checking for eventfd() ... found checking for O_PATH ... found checking for sendfile() ... found checking for sendfile64() ... found checking for sys/prctl.h ... found checking for prctl(PR_SET_DUMPABLE) ... found checking for prctl(PR_SET_KEEPCAPS) ... found checking for capabilities ... found checking for crypt_r() ... found checking for sys/vfs.h ... found checking for UDP_SEGMENT ... not found checking for nobody group ... found checking for poll() ... found checking for /dev/poll ... not found checking for kqueue ... not found checking for crypt() ... not found checking for crypt() in libcrypt ... found checking for F_READAHEAD ... not found checking for posix_fadvise() ... found checking for O_DIRECT ... found checking for F_NOCACHE ... not found checking for directio() ... not found checking for statfs() ... found checking for statvfs() ... found checking for dlopen() ... not found checking for dlopen() in libdl ... found checking for sched_yield() ... found checking for sched_setaffinity() ... found checking for SO_SETFIB ... not found checking for SO_REUSEPORT ... found checking for SO_ACCEPTFILTER ... not found checking for SO_BINDANY ... not found checking for IP_TRANSPARENT ... found checking for IP_BINDANY ... not found checking for IP_BIND_ADDRESS_NO_PORT ... found checking for IP_RECVDSTADDR ... not found checking for IP_SENDSRCADDR ... not found checking for IP_PKTINFO ... found checking for IPV6_RECVPKTINFO ... found checking for TCP_DEFER_ACCEPT ... found checking for TCP_KEEPIDLE ... found checking for TCP_FASTOPEN ... found checking for TCP_INFO ... found checking for accept4() ... found checking for int size ... 4 bytes checking for long size ... 8 bytes checking for long long size ... 8 bytes checking for void * size ... 8 bytes checking for uint32_t ... found checking for uint64_t ... found checking for sig_atomic_t ... found checking for sig_atomic_t size ... 4 bytes checking for socklen_t ... found checking for in_addr_t ... found checking for in_port_t ... found checking for rlim_t ... found checking for uintptr_t ... uintptr_t found checking for system byte ordering ... little endian checking for size_t size ... 8 bytes checking for off_t size ... 8 bytes checking for time_t size ... 8 bytes checking for AF_INET6 ... found checking for setproctitle() ... not found checking for pread() ... found checking for pwrite() ... found checking for pwritev() ... found checking for strerrordesc_np() ... not found checking for sys_nerr ... found checking for localtime_r() ... found checking for clock_gettime(CLOCK_MONOTONIC) ... found checking for posix_memalign() ... found checking for memalign() ... found checking for mmap(MAP_ANON|MAP_SHARED) ... found checking for mmap("/dev/zero", MAP_SHARED) ... found checking for System V shared memory ... found checking for POSIX semaphores ... not found checking for POSIX semaphores in libpthread ... found checking for struct msghdr.msg_control ... found checking for ioctl(FIONBIO) ... found checking for ioctl(FIONREAD) ... found checking for struct tm.tm_gmtoff ... found checking for struct dirent.d_namlen ... not found checking for struct dirent.d_type ... found checking for sysconf(_SC_NPROCESSORS_ONLN) ... found checking for sysconf(_SC_LEVEL1_DCACHE_LINESIZE) ... found checking for openat(), fstatat() ... found checking for getaddrinfo() ... found configuring additional modules adding module in /usr/local/nginx/modules/nginx-upstream-fair-master + ngx_http_upstream_fair_module was configured checking for PCRE2 library ... found checking for OpenSSL library ... found checking for zlib library ... found creating objs/Makefile Configuration summary + using system PCRE2 library + using system OpenSSL library + using system zlib library nginx path prefix: "/usr/local/nginx" nginx binary file: "/usr/local/nginx/sbin/nginx" nginx modules path: "/usr/local/nginx/modules" nginx configuration prefix: "/usr/local/nginx/conf" nginx configuration file: "/usr/local/nginx/conf/nginx.conf" nginx pid file: "/usr/local/nginx/logs/nginx.pid" nginx error log file: "/usr/local/nginx/logs/error.log" nginx http access log file: "/usr/local/nginx/logs/access.log" nginx http client request body temporary files: "client_body_temp" nginx http proxy temporary files: "proxy_temp" nginx http fastcgi temporary files: "fastcgi_temp" nginx http uwsgi temporary files: "uwsgi_temp" nginx http scgi temporary files: "scgi_temp" From francis at daoine.org Tue Apr 25 23:53:54 2023 From: francis at daoine.org (Francis Daly) Date: Wed, 26 Apr 2023 00:53:54 +0100 Subject: Adding 3rd party module not taking effect In-Reply-To: References: Message-ID: <20230425235354.GF15845@daoine.org> On Tue, Apr 25, 2023 at 10:20:12PM +0000, Martin Wolf wrote: Hi there, > I tried to add a third part module "fair balancing", but it seems to be not properly added: > > Error log: > 2023/04/25 17:14:45 [emerg] 34510#0: unknown directive "fair" in /usr/local/nginx/conf/conf.d/nginx-upstream-fair.conf:2... Yes, that says that the nginx binary that is running, does not include that module. > # nginx -V > nginx version: nginx/1.23.4 > built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) > configure arguments: --without-http_rewrite_module --without-http_gzip_module --add-module=/usr/local/nginx/modules/nginx_upstream_check_module-master That nginx binary was built with those three arguments to "configure". > steps: > $ ./configure --with-http_ssl_module --add-module=/usr/local/nginx/modules/nginx-upstream-fair-master That is a different set of arguments to "configure". The nginx binary that you want to run is not the nginx binary that you are running. Perhaps there is more than one nginx binary in your $PATH? > make -f objs/Makefile install > cp objs/nginx '/usr/local/nginx/sbin/nginx' Maybe try "/usr/local/nginx/sbin/nginx -V" to see if that is the newly-built binary? Cheers, f -- Francis Daly francis at daoine.org From wolfmart at hotmail.com Wed Apr 26 05:22:19 2023 From: wolfmart at hotmail.com (Martin Wolf) Date: Wed, 26 Apr 2023 05:22:19 +0000 Subject: Directive 3rd Party Module - log In-Reply-To: References: Message-ID: Hello, I was wondering, whether there is a possibility to verify [next to nginx.conf] in NGNX logs what Directive is used; for example to verify what load balance algorithm is used in http upstream flow. Thank you. -------------- next part -------------- An HTML attachment was scrubbed... URL: