<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Kamil Kujawiński</title>
    <description>The latest articles on Forem by Kamil Kujawiński (@kkuj).</description>
    <link>https://forem.com/kkuj</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2458391%2Fdea0ef15-f5f2-41b3-9e81-8c2a87ee8685.jpeg</url>
      <title>Forem: Kamil Kujawiński</title>
      <link>https://forem.com/kkuj</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/kkuj"/>
    <language>en</language>
    <item>
      <title>Monitor Google Cloud Platform Costs on Your iPhone and Apple Watch</title>
      <dc:creator>Kamil Kujawiński</dc:creator>
      <pubDate>Mon, 23 Mar 2026 18:51:37 +0000</pubDate>
      <link>https://forem.com/kkuj/monitor-google-cloud-platform-costs-on-your-iphone-and-apple-watch-420f</link>
      <guid>https://forem.com/kkuj/monitor-google-cloud-platform-costs-on-your-iphone-and-apple-watch-420f</guid>
      <description>&lt;p&gt;Keep an eye on your GCP costs right from your wrist. Don't let autoscaling silently run up your bill — stay informed with a quick glance at your iPhone or Apple Watch.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here's the plan:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Configure GCP billing export to a BigQuery table&lt;/li&gt;
&lt;li&gt;Create an n8n workflow that queries BigQuery for cost data&lt;/li&gt;
&lt;li&gt;Set up a widget in API Widgets to display the results&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Configure GCP Billing Export to BigQuery
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;1. Enable the BigQuery API in GCP&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5276ackltexkp53440mv.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5276ackltexkp53440mv.jpeg" alt="Enable BigQuery API in the GCP console" width="800" height="363"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Enable billing export to BigQuery&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy5qintr2p0qubysq8ivd.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy5qintr2p0qubysq8ivd.jpeg" alt="Enable billing export to BigQuery" width="800" height="510"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Create a service account for BigQuery access&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gcloud iam service-accounts create n8n-bigquery-reader &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--display-name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"n8n BigQuery Reader"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--project&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;YOUR_PROJECT_ID
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;4. Assign minimal permissions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The service account needs just two roles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;bigquery.jobUser&lt;/code&gt; — allows running queries&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;bigquery.dataViewer&lt;/code&gt; — allows reading tables and views (read-only)
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Allow running queries and reading results&lt;/span&gt;
gcloud projects add-iam-policy-binding YOUR_PROJECT_ID &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--member&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"serviceAccount:n8n-bigquery-reader@YOUR_PROJECT_ID.iam.gserviceaccount.com"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--role&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"roles/bigquery.jobUser"&lt;/span&gt;

&lt;span class="c"&gt;# Allow reading data from datasets and tables&lt;/span&gt;
gcloud projects add-iam-policy-binding YOUR_PROJECT_ID &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--member&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"serviceAccount:n8n-bigquery-reader@YOUR_PROJECT_ID.iam.gserviceaccount.com"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--role&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"roles/bigquery.dataViewer"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;5. Generate a service account key for n8n&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gcloud iam service-accounts keys create n8n-bigquery-key.json &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--iam-account&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;n8n-bigquery-reader@YOUR_PROJECT_ID.iam.gserviceaccount.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This generates a &lt;code&gt;n8n-bigquery-key.json&lt;/code&gt; file containing the service account credentials. You'll use this file to authenticate the BigQuery node in n8n.&lt;/p&gt;

&lt;h3&gt;
  
  
  Set Up the n8n Workflow
&lt;/h3&gt;

&lt;p&gt;The workflow exposes a webhook endpoint that API Widgets can call. When triggered, it queries BigQuery for your billing data, groups costs by date and service, and returns the results as JSON.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5bnrycuaij6xqqy1rljj.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5bnrycuaij6xqqy1rljj.jpeg" alt="n8n workflow for querying GCP billing costs" width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The workflow consists of five nodes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Webhook&lt;/strong&gt; — listens for incoming requests (accepts an optional &lt;code&gt;days&lt;/code&gt; query parameter, defaults to 14)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Configure variables&lt;/strong&gt; — sets the BigQuery table name and the number of days to query&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Execute BigQuery&lt;/strong&gt; — runs a SQL query that aggregates daily costs by service&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Format data&lt;/strong&gt; — transforms the results into a structured JSON response with daily totals and per-service breakdowns&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Respond to Webhook&lt;/strong&gt; — sends the formatted data back to the caller&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You can import the workflow into your n8n instance using the JSON file: &lt;a href="https://digit11.com/blog/gcp-cost/GCP%20Billing%20costs.json" rel="noopener noreferrer"&gt;GCP Billing costs.json&lt;/a&gt;. Make sure to update the &lt;code&gt;table_name&lt;/code&gt; variable in the "Configure variables" node to match your BigQuery billing export table.&lt;/p&gt;

&lt;h3&gt;
  
  
  Configure API Widgets
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;1.&lt;/strong&gt; Download &lt;a href="https://apps.apple.com/us/app/api-widgets/id6756238482" rel="noopener noreferrer"&gt;API Widgets&lt;/a&gt; from the App Store.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2.&lt;/strong&gt; Create a new widget and configure the API endpoint in the &lt;strong&gt;Source&lt;/strong&gt; tab, pointing it to your n8n webhook URL.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3.&lt;/strong&gt; Set up the visualization in the &lt;strong&gt;Design&lt;/strong&gt; tab.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fatj4e4p8qhz8iwml51sd.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fatj4e4p8qhz8iwml51sd.jpeg" alt="API Widgets design configuration on iPhone - screenshot" width="591" height="1280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4.&lt;/strong&gt; Add a home screen widget and link it to the one you just created.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3pw88o2hmd73ed8dmxvu.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3pw88o2hmd73ed8dmxvu.jpeg" alt="iPhone home screen with GCP cost widget - screenshot" width="591" height="1280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F74je4hb2qp3gjfci6ofc.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F74je4hb2qp3gjfci6ofc.jpeg" alt="iPhone home screen with GCP cost widget bar details - screenshot" width="800" height="847"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The widget also works on Apple Watch — view your costs at a glance from your wrist:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqkwv5qgawzdr9v8tpuat.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqkwv5qgawzdr9v8tpuat.jpeg" alt="Apple Watch home screen with GCP cost widget - screenshot" width="416" height="496"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Falqfuctdcfh9njc42f5q.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Falqfuctdcfh9njc42f5q.jpeg" alt="Apple Watch widget showing GCP cost chart - screenshot" width="416" height="496"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr9uvu9wh1vnyt5mjvj1q.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr9uvu9wh1vnyt5mjvj1q.jpeg" alt="Apple Watch widget showing cost breakdown details - screenshot" width="416" height="496"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>gcp</category>
      <category>iphone</category>
      <category>n8n</category>
      <category>monitoring</category>
    </item>
    <item>
      <title>Using Cloudflare SSL with Elastic Beanstalk instances</title>
      <dc:creator>Kamil Kujawiński</dc:creator>
      <pubDate>Sat, 04 Jan 2025 16:06:04 +0000</pubDate>
      <link>https://forem.com/kkuj/using-cloudflare-ssl-with-elastic-beanstalk-instances-gf3</link>
      <guid>https://forem.com/kkuj/using-cloudflare-ssl-with-elastic-beanstalk-instances-gf3</guid>
      <description>&lt;p&gt;Motivation:&lt;/p&gt;

&lt;p&gt;To obtain a free SSL certificate (by Let's Encrypt) for your web application without the hassle of renewing it every three months, consider the following approach.&lt;/p&gt;

&lt;p&gt;The simplest solution is to use a Load Balancer and attach an SSL certificate from AWS Certificate Manager (ACM) to it. However, relying on a &lt;strong&gt;Load Balancer solely for HTTPS may be costly&lt;/strong&gt;. To address this, I’ve outlined a much more affordable alternative that requires a bit of configuration.&lt;/p&gt;

&lt;p&gt;Additionally, in this post, I explain how to configure SSL for an Elastic Beanstalk instance, as I found the existing documentation and available resources to be somewhat outdated.&lt;/p&gt;




&lt;p&gt;Keyword of the solution is Cloudflare.&lt;/p&gt;

&lt;p&gt;Cloudflare offers a proxy feature that enables you to set up a free SSL certificate while securely proxying traffic to your host.&lt;/p&gt;

&lt;p&gt;In &lt;strong&gt;Flexible&lt;/strong&gt; mode, the communication between Cloudflare and AWS is not encrypted. If you prefer end-to-end encryption, you can opt for &lt;strong&gt;Full&lt;/strong&gt; mode instead.&lt;/p&gt;

&lt;p&gt;Steps&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Add your domain to Cloudflare.
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;In the DNS settings, configure your domain as proxied.&lt;/li&gt;
&lt;li&gt;In the SSL/TLS settings, select Full (strict) mode for end-to-end encryption.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Generate an Origin Certificate in Cloudflare
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Go to the SSL/TLS &amp;gt; Origin Server section in Cloudflare.&lt;/li&gt;
&lt;li&gt;Generate a certificate valid for up to 15 years.&lt;/li&gt;
&lt;li&gt;Use this certificate to configure SSL in AWS Elastic Beanstalk.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Store Certificates in AWS Secrets Manager:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Save the &lt;code&gt;server.crt&lt;/code&gt; and &lt;code&gt;server.key&lt;/code&gt; files as secrets in AWS Secrets Manager.&lt;/li&gt;
&lt;li&gt;Use the following secret names: &lt;code&gt;/app/ssl/server-crt&lt;/code&gt; and &lt;code&gt;/app/ssl/server-key&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Grant IAM Role Access to Secrets:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;In AWS IAM add a new policy named &lt;code&gt;ReadSSLSecretKeys&lt;/code&gt; for the role &lt;code&gt;aws-elasticbeanstalk-ec2-role&lt;/code&gt; with the following permissions:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ssm:GetParameter",
      "Resource": "arn:aws:ssm:region:account_id:parameter/app/ssl/server-crt"
    },
    {
      "Effect": "Allow",
      "Action": "ssm:GetParameter",
      "Resource": "arn:aws:ssm:region:account_id:parameter/app/ssl/server-key"
    }
  ]
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  5. Configure your Elastic Beanstalk deployment to listen on port &lt;code&gt;443&lt;/code&gt; and use the Origin Certificate generated in Cloudflare (stored in AWS Secrets Manager) do changes in the following files:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;.ebextensions/01_https-instance-securitygroup.config&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Resources:
  sslSecurityGroupIngress:
    Type: AWS::EC2::SecurityGroupIngress
    Properties:
      GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
      IpProtocol: tcp
      ToPort: 443
      FromPort: 443
      CidrIp: 0.0.0.0/0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;.ebextensions/02_https-instance.config&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;files:
  /etc/pki/tls/certs/server.crt:
    mode: "000400"
    owner: root
    group: root
    content: |
      -----BEGIN CERTIFICATE-----
      certificate file contents
      -----END CERTIFICATE-----

  /etc/pki/tls/certs/server.key:
    mode: "000400"
    owner: root
    group: root
    content: |
      -----BEGIN RSA PRIVATE KEY-----
      private key contents # See note below.
      -----END RSA PRIVATE KEY-----

container_commands:
  01_fetch_server_crt:
    command: |
      aws ssm get-parameter --name "/app/ssl/server-crt" --with-decryption --query "Parameter.Value" --output text &amp;gt; /etc/pki/tls/certs/server.crt
  02_fetch_server_key:
    command: |
      aws ssm get-parameter --name "/app/ssl/server-key" --with-decryption --query "Parameter.Value" --output text &amp;gt; /etc/pki/tls/certs/server.key

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;.platform/nginx/conf.d/https.conf&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;server {
    listen 443 ssl;

    ssl_certificate /etc/pki/tls/certs/server.crt;
    ssl_certificate_key /etc/pki/tls/certs/server.key;

    ssl_session_timeout 5m;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;

    location / {
      proxy_pass http://127.0.0.1:8000;
      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_set_header X-Forwarded-Proto https;
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>aws</category>
      <category>elasticbeanstalk</category>
      <category>cloudflare</category>
      <category>ssl</category>
    </item>
  </channel>
</rss>
