Comments (14)
This issue is currently awaiting triage.
If Ingress contributors determines this is a relevant issue, they will accept it by applying the triage/accepted
label and provide further guidance.
The triage/accepted
label can be added by org members by writing /triage accepted
in a comment.
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.
from ingress-nginx.
/remove-kind feature
/kind support
If the backend app returned a 499 and it was logged and also the client received the 499, I think the controller has done the job of routing the request and the response.
Can you provide more details about this issue. Specially what was the request sent as a curl command exactly as executed from shell.
One of the questions asked in the new bug report template is this curl command and also many other info like kubectl describe output of the ingress resource. Without all this data, its not possible for a reader to reproduce the problem or even create an environment that is just like your environment.
If your app is designed to start a process or a thread and then not respond back to the client appropriately, then you need to explain what is expected from the controller as per K8S Ingress-API specs.
When you have provided this information, please re-open this issue. Please click the new bug report button just to see the questions asked there. Then don't create a new issue but edit this issue description and answer those questions in md format, so the readers here can replicate the problem and comment on the issue.
Please use the image from httpbun.com to create a test if possible. Readers here can not use your application image as that is not a standard way to debug ingress-nginx controller features.
thanks.
/close
from ingress-nginx.
@longwuyuan: Closing this issue.
In response to this:
/remove-kind feature
/kind supportIf the backend app returned a 499 and it was logged and also the client received the 499, I think the controller has done the job of routing the request and the response.
Can you provide more details about this issue. Specially what was the request sent as a curl command exactly as executed from shell.
One of the questions asked in the new bug report template is this curl command and also many other info like kubectl describe output of the ingress resource. Without all this data, its not possible for a reader to reproduce the problem or even create an environment that is just like your environment.
If your app is designed to start a process or a thread and then not respond back to the client appropriately, then you need to explain what is expected from the controller as per K8S Ingress-API specs.
When you have provided this information, please re-open this issue. Please click the new bug report button just to see the questions asked there. Then don't create a new issue but edit this issue description and answer those questions in md format, so the readers here can replicate the problem and comment on the issue.
Please use the image from httpbun.com to create a test if possible. Readers here can not use your application image as that is not a standard way to debug ingress-nginx controller features.
thanks.
/close
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.
from ingress-nginx.
I simulated using jmeter calling a endpoint that have a delay of 10s but with 2 I interrupted the call. In the log of the ingress-nginx-controller (kubectl logs -f ingress-nginx-controller-598d89fc8d-5567n -n ingress-nginx) was printed
172.21.0.224 - user [30/Apr/2024:16:49:27 +0000] "GET /test/slow/5000 HTTP/1.1" 499 0 "-" "Apache-HttpClient/4.5.12 (Java/1.8.0_382)" 301 1.867 [rjapi-service-eks-test-8080] [] 172.21.66.9:8080 0 1.866 - 820429946f9c36efded31fa093f7e104
but the service continued the process.
This service was write in java with springboot. In the log of service I could see the complete process.
2024-04-30T16:49:52.980Z INFO 1 --- [service-test] [nio-8080-exec-5] b.c.r.controller.TestController : CALL /slow/10000
2024-04-30T16:50:02.981Z INFO 1 --- [service-test] [nio-8080-exec-5] b.c.r.controller.TestController : FINISHED /slow
I made a another test creating a LoadBalancer Service and I had the behavior that I want.
Calling this url I have this behavior when I interrupted the connection.
org.springframework.web.context.request.async.AsyncRequestNotUsableException: ServletOutputStream failed to flush: java.io.IOException: Connection reset by peer
Caused by: java.io.IOException: Connection reset by peer
/reopen
from ingress-nginx.
@longwuyuan: Closing this issue.
In response to this:
/remove-kind feature
/kind support
If the backend app returned a 499 and it was logged and also the client received the 499, I think the controller has done the job of routing the request and the response.
Can you provide more details about this issue. Specially what was the request sent as a curl command exactly as executed from shell.
One of the questions asked in the new bug report template is this curl command and also many other info like kubectl describe output of the ingress resource. Without all this data, its not possible for a reader to reproduce the problem or even create an environment that is just like your environment.
If your app is designed to start a process or a thread and then not respond back to the client appropriately, then you need to explain what is expected from the controller as per K8S Ingress-API specs.
When you have provided this information, please re-open this issue. Please click the new bug report button just to see the questions asked there. Then don't create a new issue but edit this issue description and answer those questions in md format, so the readers here can replicate the problem and comment on the issue.
Please use the image from httpbun.com to create a test if possible. Readers here can not use your application image as that is not a standard way to debug ingress-nginx controller features.
thanks.
/closeInstructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.
/reopen
from ingress-nginx.
@trevezani: Reopened this issue.
In response to this:
@longwuyuan: Closing this issue.
In response to this:
/remove-kind feature
/kind support
If the backend app returned a 499 and it was logged and also the client received the 499, I think the controller has done the job of routing the request and the response.
Can you provide more details about this issue. Specially what was the request sent as a curl command exactly as executed from shell.
One of the questions asked in the new bug report template is this curl command and also many other info like kubectl describe output of the ingress resource. Without all this data, its not possible for a reader to reproduce the problem or even create an environment that is just like your environment.
If your app is designed to start a process or a thread and then not respond back to the client appropriately, then you need to explain what is expected from the controller as per K8S Ingress-API specs.
When you have provided this information, please re-open this issue. Please click the new bug report button just to see the questions asked there. Then don't create a new issue but edit this issue description and answer those questions in md format, so the readers here can replicate the problem and comment on the issue.
Please use the image from httpbun.com to create a test if possible. Readers here can not use your application image as that is not a standard way to debug ingress-nginx controller features.
thanks.
/closeInstructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.
/reopen
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.
from ingress-nginx.
What are you expecting the controller to do ? Can you explain in detail what you expect ?
from ingress-nginx.
Also, it seems like you have a java app in your testing.
Please do your tests using an image like nginx:alpine
like kubectl create deploy test0 --image nginx:alpine
. The controller behavior is same for both your image as well as vanilla nginx image but the vanilla nginx image removes the complexity of considering custom apps or frameworks to be a factor in closing connections to upstream.
from ingress-nginx.
I expected the ingress closes the connection with the service and in the service the exception happens like below:
org.springframework.web.context.request.async.AsyncRequestNotUsableException: ServletOutputStream failed to flush: java.io.IOException: Connection reset by peer
Caused by: java.io.IOException: Connection reset by peer
from ingress-nginx.
Using your app is not a conclusive information that the controller is not closing connection as required.
Please use the nginx:alpine image like this
- kubectl create deployment test0 --image nginx:alpine
- kubectl expose deployment test0 --port 80
- kubectl create ing test0 --class nginx --rule test0.mydomain.com/"*"=test0:80
- curl --resolve test0,mydomain.com:80:
my ingresscontroller external ip
test0,mydomain.com
Do not use your app
Rreport all the outputs of commands like kubectl describe and kubectl logs and curl command etc or
from ingress-nginx.
curl -k --resolve test0.mydomain.com:443:x.x.x.x https://test0.mydomain.com
<title>Welcome to nginx!</title> <style> html { color-scheme: light dark; } body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style>Welcome to nginx!
If you see this page, the nginx web server is successfully installed and working. Further configuration is required.
For online documentation and support please refer to
nginx.org.
Commercial support is available at
nginx.com.
Thank you for using nginx.
log ingress-nginx
172.21.0.224 - - [30/Apr/2024:19:38:48 +0000] "GET / HTTP/1.1" 200 615 "-" "curl/8.4.0" 81 0.001 [test-test0-80] [] 172.21.47.222:80 615 0.001 200 23475003b3b98b4d6c7e8457b8064172
log nginx pod
172.21.41.192 - - [30/Apr/2024:19:38:48 +0000] "GET / HTTP/1.1" 200 615 "-" "curl/8.4.0" "172.21.0.224"
curl -k -m .470 --resolve test0.mydomain.com:443:x.x.x.x https://test0.mydomain.com
log ingress-nginx
172.21.0.224 - - [30/Apr/2024:19:37:13 +0000] "GET / HTTP/1.1" 499 0 "-" "curl/8.4.0" 81 0.000 [test-test0-80] [] 172.21.47.222:80 0 0.000 - 2889e565a82f4db8e58280450ad03e61
log nginx pod
172.21.41.192 - - [30/Apr/2024:19:37:13 +0000] "GET / HTTP/1.1" 200 615 "-" "curl/8.4.0" "172.21.0.224"
from ingress-nginx.
I think the issue description from you is clear now.
- This will not see any change from the project as there is nothing to be done
- This code 499 seems special to nginx because nginx has multi-threaded design for handling requests
- After searching on internet, it seems clear that 499 is returned to you because curl client closed connection
- You closed connection within .470 seconds so you got 499 response which is accurate response
- The service --type LoadBalancer does not use nginx so you don't see this behavior there
from ingress-nginx.
Right, when I force the ingress to close connection the nginx identify the problem and put on log the correct behavior... But for me the correct is the nginx make the same with the service... I don't know if is possible. When I use a traefik like a reverse proxy and close the connection, the traefik close the connection with the backend associate with him.
This scenario I use in a docker environment.
from ingress-nginx.
Its clear what you expect.
But it is not possible.
Please close the case if no more questions
from ingress-nginx.
Related Issues (20)
- error page for response code 302 HOT 6
- Option to skip the rbac creation in admission-webhooks HOT 1
- Download via Ingress Nginx super slow compared to External IP or NodePort HOT 20
- Kafka Broker Cannot Access Outside Kubernetes Cluster via ClusterIP Services HOT 1
- Open Telemetry can not collect header request and body HOT 1
- LanguageSpecificPackageVulnerability HOT 4
- Vulnerability (CVE-2022-27782) in the curl package HOT 2
- Add option to forbid plain http requests (where ssl-redirect is unsafe) HOT 3
- Kubectl plugin backends does not show backends for TCP and UDP services HOT 1
- [Vulnerabilities] current version of nginx-ingress-controller v1.10.1 has many vulnerabilties HOT 6
- Question: why the case insensitive regular expression location modifier will be enforced on ALL paths If the use-regex is set HOT 12
- Nginx version 1.25.3 is End Of Life HOT 5
- Add a few more http headers to custom-error-pages default backend requests HOT 3
- TLS passthrough fails if Client Hello is fragmented in multiple TCP packets. HOT 3
- make nginx-1.9.3-hardened1 error HOT 3
- Connection timed out for controller Pods. HOT 2
- Text Streaming not working when using Nginx-Ingress on Kubernetes HOT 7
- doc error about traffic mirror HOT 3
- Helm: Use OCI-based registries HOT 8
- removing ingress Nginx default résponse header HOT 10
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ingress-nginx.