diff --git a/ddtrace/contrib/aiohttp/middlewares.py b/ddtrace/contrib/aiohttp/middlewares.py
index e38237d2b..f053ee679 100644
--- a/ddtrace/contrib/aiohttp/middlewares.py
+++ b/ddtrace/contrib/aiohttp/middlewares.py
@@ -108,7 +108,7 @@ def on_prepare(request, response):
     # DEV: aiohttp is special case maintains separate configuration from config api
     trace_query_string = request[REQUEST_CONFIG_KEY].get('trace_query_string')
     if trace_query_string is None:
-        trace_query_string = config._http.trace_query_string
+        trace_query_string = config.http.trace_query_string
     if trace_query_string:
         request_span.set_tag(http.QUERY_STRING, request.query_string)
     request_span.finish()
diff --git a/ddtrace/settings/config.py b/ddtrace/settings/config.py
index 0045bc10c..e0e73c754 100644
--- a/ddtrace/settings/config.py
+++ b/ddtrace/settings/config.py
@@ -42,7 +42,7 @@ class Config(object):
     def __init__(self):
         # use a dict as underlying storing mechanism
         self._config = {}
-        self._http = HttpConfig()
+        self.http = HttpConfig()
         # Master switch for turning on and off trace search by default
         # this weird invocation of get_env is meant to read the DD_ANALYTICS_ENABLED
         # legacy environment variable. It should be removed in the future
@@ -129,7 +129,7 @@ class Config(object):
         :return: self
         :rtype: HttpConfig
         """
-        self._http.trace_headers(whitelist)
+        self.http.trace_headers(whitelist)
         return self
 
     def header_is_traced(self, header_name):
@@ -139,7 +139,7 @@ class Config(object):
         :type header_name: str
         :rtype: bool
         """
-        return self._http.header_is_traced(header_name)
+        return self.http.header_is_traced(header_name)
 
     def _get_service(self, default=None):
         """
diff --git a/ddtrace/settings/integration.py b/ddtrace/settings/integration.py
index 67e21ca4f..579fa2822 100644
--- a/ddtrace/settings/integration.py
+++ b/ddtrace/settings/integration.py
@@ -69,7 +69,7 @@ class IntegrationConfig(AttrDict):
     def trace_query_string(self):
         if self.http.trace_query_string is not None:
             return self.http.trace_query_string
-        return self.global_config._http.trace_query_string
+        return self.global_config.http.trace_query_string
 
     def header_is_traced(self, header_name):
         """

Global config of query string tracing fails with `AttributeError`
### Which version of dd-trace-py are you using?
`0.40.0`

### Which version of the libraries are you using?
on python 3.6.10

can provide library list if really necessary

### How can we reproduce your problem?
As per the instructions in [advanced usage](https://github.com/DataDog/dd-trace-py/blob/bffcaf3c612db3c6064c936a37e932d3293c878a/docs/advanced_usage.rst#query-string-tracing):

```python
from ddtrace import config

# Global config
config.http.trace_query_string = True
```

### What is the result that you get?
This fails with `AttributeError: can't set attribute`

```python
>>> from ddtrace import config
>>> config.http.trace_query_string = True
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/opt/storefrontpy/lib/python3.6/site-packages/ddtrace/utils/attrdict.py", line 34, in __setattr__
    object.__setattr__(self, key, value)
AttributeError: can't set attribute
>>>
```

### What is the result that you expected?
Should successfully configure this setting globally
diff --git a/tests/tracer/test_settings.py b/tests/tracer/test_settings.py
index c2298790a..2e1a97db0 100644
--- a/tests/tracer/test_settings.py
+++ b/tests/tracer/test_settings.py
@@ -59,6 +59,22 @@ class TestConfig(BaseTestCase):
             config = Config()
             self.assertEqual(config.service, "my-service")
 
+    def test_http_config(self):
+        config = Config()
+        config._add("django", dict())
+        assert config.django.trace_query_string is None
+        config.http.trace_query_string = True
+        assert config.http.trace_query_string is True
+        assert config.django.trace_query_string is True
+
+        # Integration usage
+        config = Config()
+        config._add("django", dict())
+        config.django.http.trace_query_string = True
+        assert config.http.trace_query_string is None
+        assert config.django.trace_query_string is True
+        assert config.django.http.trace_query_string is True
+
 
 class TestHttpConfig(BaseTestCase):
 

pip install -e .[dev]
parse_log_pytest
requirements.txt
pytest pytest-benchmark pytest-cov pytest-django pytest-mock
apt-get update apt-get install -y gcc
3.9
requirements/base.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
coverage==7.8.0
-e git+https://github.com/DataDog/dd-trace-py.git@d6c77e6f8d9a337774312ce02ee124eb81029c12#egg=ddtrace
exceptiongroup==1.2.2
iniconfig==2.1.0
intervaltree==3.1.0
packaging==24.2
pluggy==1.5.0
protobuf==6.30.2
py-cpuinfo==9.0.0
pytest==8.3.5
pytest-benchmark==5.1.0
pytest-cov==6.0.0
pytest-django==4.10.0
pytest-mock==3.14.0
sortedcontainers==2.4.0
tenacity==9.0.0
tomli==2.2.1

name: dd-trace-py
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=3.0.16=h5eee18b_0
  - pip=25.0=py39h06a4308_0
  - python=3.9.21=he870216_1
  - readline=8.2=h5eee18b_0
  - setuptools=75.8.0=py39h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tzdata=2025a=h04d1e81_0
  - wheel=0.45.1=py39h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - coverage==7.8.0
      - ddtrace==0.42.0.dev9+gd6c77e6f8
      - exceptiongroup==1.2.2
      - iniconfig==2.1.0
      - intervaltree==3.1.0
      - packaging==24.2
      - pluggy==1.5.0
      - protobuf==6.30.2
      - py-cpuinfo==9.0.0
      - pytest==8.3.5
      - pytest-benchmark==5.1.0
      - pytest-cov==6.0.0
      - pytest-django==4.10.0
      - pytest-mock==3.14.0
      - sortedcontainers==2.4.0
      - tenacity==9.0.0
      - tomli==2.2.1
prefix: /opt/conda/envs/dd-trace-py

tests/tracer/test_settings.py::TestConfig::test_http_config
tests/tracer/test_settings.py::TestConfig::test_environment_analytics_enabled tests/tracer/test_settings.py::TestConfig::test_environment_analytics_overrides tests/tracer/test_settings.py::TestConfig::test_logs_injection tests/tracer/test_settings.py::TestConfig::test_service tests/tracer/test_settings.py::TestHttpConfig::test_empty_entry_do_not_raise_exception tests/tracer/test_settings.py::TestHttpConfig::test_header_is_traced_case_insensitive tests/tracer/test_settings.py::TestHttpConfig::test_header_is_traced_false_for_empty_header tests/tracer/test_settings.py::TestHttpConfig::test_header_is_traced_false_for_none_header tests/tracer/test_settings.py::TestHttpConfig::test_is_header_tracing_configured tests/tracer/test_settings.py::TestHttpConfig::test_none_entry_do_not_raise_exception tests/tracer/test_settings.py::TestHttpConfig::test_trace_headers tests/tracer/test_settings.py::TestHttpConfig::test_trace_headers_whitelist_case_insensitive tests/tracer/test_settings.py::TestHttpConfig::test_trace_multiple_headers tests/tracer/test_settings.py::TestIntegrationConfig::test_allow_attr_access tests/tracer/test_settings.py::TestIntegrationConfig::test_allow_both_access tests/tracer/test_settings.py::TestIntegrationConfig::test_allow_configuring_http tests/tracer/test_settings.py::TestIntegrationConfig::test_allow_exist_both_global_and_integration_config tests/tracer/test_settings.py::TestIntegrationConfig::test_allow_item_access tests/tracer/test_settings.py::TestIntegrationConfig::test_analytics_enabled_attribute tests/tracer/test_settings.py::TestIntegrationConfig::test_copy tests/tracer/test_settings.py::TestIntegrationConfig::test_deepcopy tests/tracer/test_settings.py::TestIntegrationConfig::test_environment_analytics_enabled tests/tracer/test_settings.py::TestIntegrationConfig::test_get_analytics_sample_rate tests/tracer/test_settings.py::TestIntegrationConfig::test_is_a_dict
ddtrace/settings/config.py ddtrace/contrib/aiohttp/middlewares.py ddtrace/settings/integration.py
ddtrace/settings/config.py ddtrace/contrib/aiohttp/middlewares.py ddtrace/settings/integration.py