You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by "mattwang44 (via GitHub)" <gi...@apache.org> on 2026/10/19 05:38:35 UTC

[PR] Document running multiple Airflow instances on the same host [airflow]

mattwang44 opened a new pull request, #75056:
URL: https://github.com/apache/airflow/pull/75056

   Browsers scope cookies by host name and path, not by port. Two Airflow instances served from the same host name with the same `[api] base_url` path therefore share the `_token` cookie, and logging in to one logs you out of the other. As suggested on the issue, this is documented rather than changed in code.
   
   I reproduced it on Airflow 3.4.0 with SimpleAuthManager: with both instances on `/`, logging in to B overwrote A's `_token`, and A returned 403 and cleared the cookie. With `base_url` paths `/a` and `/b`, both sessions stayed valid, because Airflow scopes the cookie to the `base_url` path (`get_cookie_path()` in `api_fastapi/app.py`; the Keycloak, AWS and FAB auth managers pass the same path).
   
   This adds a "Running multiple Airflow instances on the same host" section to `run-behind-proxy.rst`, next to the existing `base_url` guidance: give each instance its own `base_url` path, or serve each from its own host name.
   
   closes: #17689
   
    <!-- SPDX-License-Identifier: Apache-2.0
         https://www.apache.org/licenses/LICENSE-2.0 -->
   
   <!--
   Thank you for contributing!
   
   Please provide above a brief description of the changes made in this pull request.
   Write a good git commit message following this guide: https://chris.beams.io/posts/git-commit/
   
   Please make sure that your code changes are covered with tests.
   And in case of new features or big changes remember to adjust the documentation.
   
   For user-facing UI changes, please attach before/after screenshots (or a short
   screen recording) so reviewers can assess the visual impact.
   
   Feel free to ping (in general) for the review if you do not see reaction for a few days
   (72 Hours is the minimum reaction time you can expect from volunteers) - we sometimes miss notifications.
   
   In case of an existing issue, reference it using one of the following:
   
   * closes: #ISSUE
   * related: #ISSUE
   -->
   
   ---
   
   ##### Was generative AI tooling used to co-author this PR?
   
   <!--
   If generative AI tooling has been used in the process of authoring this PR, please
   change below checkbox to `[X]` followed by the name of the tool, uncomment the "Generated-by".
   -->
   
   - [X] Yes — Claude Code (Claude Opus 5.5)
   
   <!--
   Generated-by: [Tool Name] following [the guidelines](https://github.com/apache/airflow/blob/main/contributing-docs/05_pull_requests.rst#gen-ai-assisted-contributions)
   -->
   
   ---
   
   * Read the **[Pull Request Guidelines](https://github.com/apache/airflow/blob/main/contributing-docs/05_pull_requests.rst#pull-request-guidelines)** for more information. Note: commit author/co-author name and email in commits become permanently public when merged.
   * For fundamental code changes, an Airflow Improvement Proposal ([AIP](https://cwiki.apache.org/confluence/display/AIRFLOW/Airflow+Improvement+Proposals)) is needed.
   * When adding dependency, check compliance with the [ASF 3rd Party License Policy](https://www.apache.org/legal/resolved.html#category-x).
   * For significant user-facing changes create newsfragment: `{pr_number}.significant.rst`, in [airflow-core/newsfragments](https://github.com/apache/airflow/tree/main/airflow-core/newsfragments). You can add this file in a follow-up commit after the PR is created so you know the PR number.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Document running multiple Airflow instances on the same host [airflow]

Posted by "Lee-W (via GitHub)" <gi...@apache.org>.
Lee-W merged PR #75056:
URL: https://github.com/apache/airflow/pull/75056


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Document running multiple Airflow instances on the same host [airflow]

Posted by "mattwang44 (via GitHub)" <gi...@apache.org>.
mattwang44 commented on code in PR #75056:
URL: https://github.com/apache/airflow/pull/75056#discussion_r4311886564


##########
airflow-core/docs/howto/run-behind-proxy.rst:
##########
@@ -70,6 +70,37 @@ To do so, you need to set the following setting in your ``airflow.cfg``::
 - Please make sure your proxy does not enforce http-only status on the Set-Cookie headers.
   Airflow frontend needs to access the cookies through javascript, and a http-only flag would disturb this functionality.
 
+Running multiple Airflow instances on the same host
+---------------------------------------------------
+
+If you serve several Airflow instances from the same host name (for example ``https://lab.mycompany.com``,
+or ``localhost`` on different ports), give each instance its own path in ``[api] base_url``. Browsers scope
+cookies by host name and path, not by port, so instances that share the same ``base_url`` path also share
+the authentication cookie: logging in to one instance logs you out of the others.
+
+Airflow scopes its authentication cookie to the ``base_url`` path since Airflow 3.1.8. With the FAB,
+Keycloak or AWS auth manager, this also requires ``apache-airflow-providers-fab`` 3.5.0,
+``apache-airflow-providers-keycloak`` 0.6.0 or ``apache-airflow-providers-amazon`` 9.23.0 or later.
+For example::
+
+    # instance serving production
+    base_url = https://lab.mycompany.com/prod
+
+    # instance serving development
+    base_url = https://lab.mycompany.com/dev
+
+Paths that share a prefix, such as ``/airflow`` and ``/airflow_dev``, are fine: the cookie path always
+ends with ``/``, so the cookie of one instance is not sent to the other.
+
+.. warning::
+
+    Do not serve one instance at the root path (``/``) while other instances on the same host name use

Review Comment:
   fixed



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] Document running multiple Airflow instances on the same host [airflow]

Posted by "Lee-W (via GitHub)" <gi...@apache.org>.
Lee-W commented on code in PR #75056:
URL: https://github.com/apache/airflow/pull/75056#discussion_r4311848223


##########
airflow-core/docs/howto/run-behind-proxy.rst:
##########
@@ -70,6 +70,37 @@ To do so, you need to set the following setting in your ``airflow.cfg``::
 - Please make sure your proxy does not enforce http-only status on the Set-Cookie headers.
   Airflow frontend needs to access the cookies through javascript, and a http-only flag would disturb this functionality.
 
+Running multiple Airflow instances on the same host
+---------------------------------------------------
+
+If you serve several Airflow instances from the same host name (for example ``https://lab.mycompany.com``,
+or ``localhost`` on different ports), give each instance its own path in ``[api] base_url``. Browsers scope
+cookies by host name and path, not by port, so instances that share the same ``base_url`` path also share
+the authentication cookie: logging in to one instance logs you out of the others.
+
+Airflow scopes its authentication cookie to the ``base_url`` path since Airflow 3.1.8. With the FAB,
+Keycloak or AWS auth manager, this also requires ``apache-airflow-providers-fab`` 3.5.0,
+``apache-airflow-providers-keycloak`` 0.6.0 or ``apache-airflow-providers-amazon`` 9.23.0 or later.
+For example::
+
+    # instance serving production
+    base_url = https://lab.mycompany.com/prod
+
+    # instance serving development
+    base_url = https://lab.mycompany.com/dev
+
+Paths that share a prefix, such as ``/airflow`` and ``/airflow_dev``, are fine: the cookie path always
+ends with ``/``, so the cookie of one instance is not sent to the other.
+
+.. warning::
+
+    Do not serve one instance at the root path (``/``) while other instances on the same host name use

Review Comment:
   nit: We could say the `base_url` path of one instance must not be a prefix of another's.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@airflow.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org