cjm*_*ash 5 ruby-on-rails nginx google-cloud-platform
我正在尝试使用 NGINX 反向代理 GCP 上的 ruby 项目,我的/etc/nginx/sites-available/default文件如下所示
server {\n large_client_header_buffers 4 16k;\n listen 80 default_server;\n #server_name my-devops-staging.com \n listen [::]:80 default_server;\n #return 301 https://$host$request_uri;\n # SSL configuration\n #\n listen 443 ssl default_server;\n listen [::]:443 ssl default_server;\n ssl_certificate /etc/nginx/certificate.crt;\n ssl_certificate_key /etc/nginx/key.key;\n ssl off;\n ssl_session_cache builtin:1000 shared:SSL:10m;\n ssl_protocols TLSv1 TLSv1.1 TLSv1.2;\n ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;\n ssl_prefer_server_ciphers on;\n # Note: You should disable gzip for SSL traffic.\n # See: https://bugs.debian.org/773332\n #\n # Read up on ssl_ciphers to ensure a secure configuration.\n # See: https://bugs.debian.org/765782\n #\n # Self signed certs generated by the ssl-cert package\n # Don\'t use them in a production server!\n #\n # include snippets/snakeoil.conf;\n root /var/www/html;\n # Add index.php to the list if you are using PHP\n index index.html index.htm index.nginx-debian.html;\n location / {\n proxy_set_header Host $server_name;\n proxy_set_header X-Real-IP $remote_addr;\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n proxy_set_header X-Forwarded-Proto $scheme;\n # Fix the \xe2\x80\x9cIt appears that your reverse proxy set up is broken" error.\n proxy_pass http://localhost:8080;\n # proxy_read_timeout 300;\n proxy_read_timeout 9000;\n proxy_request_buffering off;\n proxy_buffering off;\n proxy_redirect off;\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n每当我跑步时,我可能做错了什么
\n\n$ sudo service nginx restart\nRun Code Online (Sandbox Code Playgroud)\n\n我在以下位置收到这些错误error.log
2018/03/27 08:32:50 [error] 2959#2959: *64 upstream prematurely closed connection while reading response header from upstream, client: 130.211.2.175, server: , request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8080/", host: "my-devops-staging.com" \n2018/03/27 08:32:53 [error] 2959#2959: *66 upstream prematurely closed connection while reading response header from upstream, client 130.211.2.87, server: , request: "GET / HTTP/1.1", upstream: http://127.0.0.1:8080/", host: "my-devops-staging.com"\nRun Code Online (Sandbox Code Playgroud)\n
通过将这些参数添加到代理 Nginx 配置文件中,使代理和后端之间的通信更加忠实:
location / {
proxy_http_version 1.1; # you need to set this in order to use params below.
proxy_temp_file_write_size 64k;
proxy_connect_timeout 10080s;
proxy_send_timeout 10080;
proxy_read_timeout 10080;
proxy_buffer_size 64k;
proxy_buffers 16 32k;
proxy_busy_buffers_size 64k;
proxy_redirect off;
proxy_request_buffering off;
proxy_buffering off;
proxy_pass <whatever_here>;
}
Run Code Online (Sandbox Code Playgroud)
我从适合我们的生产环境中获取的神奇数字。您可能需要考虑更改这些数字以适应您的环境和连接数量等。
我希望这有帮助。
实际上,您在连接到 Rails 应用程序时超时了,您可以将其降低proxy_read_timeout到 300 并提高proxy_connect_timeout到匹配的值,如果这种情况持续发生,则可以提高到更高。只需在您的块中添加这些行location \ {...}:
location / {
proxy_set_header Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://localhost:8080;
proxy_read_timeout 300; # Reducing this
proxy_connect_timeout 300; # Adding this
proxy_request_buffering off;
proxy_buffering off;
proxy_redirect off;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
47407 次 |
| 最近记录: |