[{"data":1,"prerenderedAt":1902},["ShallowReactive",2],{"navigation":3,"/docs/guide/configuring-trusted-proxies":221,"/docs/guide/configuring-trusted-proxies-surround":1897},[4],{"title":5,"path":6,"stem":7,"children":8},"Docs","/docs","docs",[9,12,56,85,132,153,178,195,208],{"title":10,"path":6,"stem":11},"","docs/index",{"title":13,"path":14,"stem":15,"children":16,"icon":55},"Getting Started","/docs/getting-started","docs/1.getting-started/1.index",[17,19,23,27,31,35,39,43,47,51],{"title":18,"path":14,"stem":15},"Introduction",{"title":20,"path":21,"stem":22},"Container Basics","/docs/getting-started/container-basics","docs/1.getting-started/2.container-basics",{"title":24,"path":25,"stem":26},"Installation","/docs/getting-started/installation","docs/1.getting-started/3.installation",{"title":28,"path":29,"stem":30},"These Images vs Others","/docs/getting-started/these-images-vs-others","docs/1.getting-started/4.these-images-vs-others",{"title":32,"path":33,"stem":34},"Choosing an Image","/docs/getting-started/choosing-an-image","docs/1.getting-started/5.choosing-an-image",{"title":36,"path":37,"stem":38},"Default Configurations","/docs/getting-started/default-configurations","docs/1.getting-started/6.default-configurations",{"title":40,"path":41,"stem":42},"Upgrade Guide","/docs/getting-started/upgrade-guide","docs/1.getting-started/7.upgrade-guide",{"title":44,"path":45,"stem":46},"Changelog","/docs/getting-started/changelog","docs/1.getting-started/8.changelog",{"title":48,"path":49,"stem":50},"About","/docs/getting-started/about","docs/1.getting-started/9.about",{"title":52,"path":53,"stem":54},"Contributing","/docs/getting-started/contributing","docs/1.getting-started/99.contributing",false,{"title":57,"path":58,"stem":59,"children":60,"page":55},"Image Variations","/docs/image-variations","docs/2.image-variations",[61,65,69,73,77,81],{"title":62,"path":63,"stem":64},"CLI","/docs/image-variations/cli","docs/2.image-variations/cli",{"title":66,"path":67,"stem":68},"FPM","/docs/image-variations/fpm","docs/2.image-variations/fpm",{"title":70,"path":71,"stem":72},"FPM-Apache","/docs/image-variations/fpm-apache","docs/2.image-variations/fpm-apache",{"title":74,"path":75,"stem":76},"FPM-NGINX","/docs/image-variations/fpm-nginx","docs/2.image-variations/fpm-nginx",{"title":78,"path":79,"stem":80},"FrankenPHP","/docs/image-variations/frankenphp","docs/2.image-variations/frankenphp",{"title":82,"path":83,"stem":84},"Unit (Deprecated)","/docs/image-variations/unit","docs/2.image-variations/unit",{"title":86,"path":87,"stem":88,"children":89,"page":55},"Framework Guides","/docs/framework-guides","docs/3.framework-guides",[90,123],{"title":91,"icon":55,"defaultOpen":55,"path":92,"stem":93,"children":94,"page":55},"Laravel","/docs/framework-guides/laravel","docs/3.framework-guides/1.laravel",[95,99,103,107,111,115,119],{"title":96,"path":97,"stem":98},"Automations","/docs/framework-guides/laravel/automations","docs/3.framework-guides/1.laravel/1.automations",{"title":100,"path":101,"stem":102},"Task Scheduler","/docs/framework-guides/laravel/task-scheduler","docs/3.framework-guides/1.laravel/2.task-scheduler",{"title":104,"path":105,"stem":106},"Queue","/docs/framework-guides/laravel/queue","docs/3.framework-guides/1.laravel/3.queue",{"title":108,"path":109,"stem":110},"Horizon","/docs/framework-guides/laravel/horizon","docs/3.framework-guides/1.laravel/4.horizon",{"title":112,"path":113,"stem":114},"Reverb","/docs/framework-guides/laravel/reverb","docs/3.framework-guides/1.laravel/4.reverb",{"title":116,"path":117,"stem":118},"Nightwatch","/docs/framework-guides/laravel/nightwatch","docs/3.framework-guides/1.laravel/5.nightwatch",{"title":120,"path":121,"stem":122},"Octane","/docs/framework-guides/laravel/octane","docs/3.framework-guides/1.laravel/octane",{"title":124,"icon":55,"defaultOpen":55,"path":125,"stem":126,"children":127,"page":55},"WordPress","/docs/framework-guides/wordpress","docs/3.framework-guides/2.wordpress",[128],{"title":129,"path":130,"stem":131},"Using Docker with WordPress","/docs/framework-guides/wordpress/using-wordpress-with-docker","docs/3.framework-guides/2.wordpress/4.using-wordpress-with-docker",{"title":133,"path":134,"stem":135,"children":136,"page":55},"Deployment And Production","/docs/deployment-and-production","docs/4.deployment-and-production",[137,141,145,149],{"title":138,"path":139,"stem":140},"Development to Production","/docs/deployment-and-production/development-to-production","docs/4.deployment-and-production/2.development-to-production",{"title":142,"path":143,"stem":144},"Packaging Your App for Deployment","/docs/deployment-and-production/packaging-your-app-for-deployment","docs/4.deployment-and-production/3.packaging-your-app-for-deployment",{"title":146,"path":147,"stem":148},"Configuring SSL","/docs/deployment-and-production/configuring-ssl","docs/4.deployment-and-production/4.configuring-ssl",{"title":150,"path":151,"stem":152},"Choosing a Host","/docs/deployment-and-production/choosing-a-host","docs/4.deployment-and-production/5.choosing-a-host",{"title":154,"icon":55,"defaultOpen":55,"path":155,"stem":156,"children":157,"page":55},"Advanced Guides","/docs/guide","docs/5.guide",[158,162,166,170,174],{"title":159,"path":160,"stem":161},"Migrating from official PHP images","/docs/guide/migrating-from-official-php-images","docs/5.guide/1.migrating-from-official-php-images",{"title":163,"path":164,"stem":165},"Using Healthchecks With Laravel","/docs/guide/using-healthchecks-with-laravel","docs/5.guide/2.using-healthchecks-with-laravel",{"title":167,"path":168,"stem":169},"Using S6 Overlay","/docs/guide/using-s6-overlay","docs/5.guide/2.using-s6-overlay",{"title":171,"path":172,"stem":173},"Understanding File Permissions","/docs/guide/understanding-file-permissions","docs/5.guide/3.understanding-file-permissions",{"title":175,"path":176,"stem":177},"Configuring Trusted Proxies","/docs/guide/configuring-trusted-proxies","docs/5.guide/4.configuring-trusted-proxies",{"title":179,"icon":55,"defaultOpen":55,"path":180,"stem":181,"children":182,"page":55},"Customization","/docs/customizing-the-image","docs/6.customizing-the-image",[183,187,191],{"title":184,"path":185,"stem":186},"Changing php.ini settings","/docs/customizing-the-image/changing-common-php-settings","docs/6.customizing-the-image/1.changing-common-php-settings",{"title":188,"path":189,"stem":190},"Installing PHP extensions","/docs/customizing-the-image/installing-additional-php-extensions","docs/6.customizing-the-image/2.installing-additional-php-extensions",{"title":192,"path":193,"stem":194},"Adding Start Up Scripts","/docs/customizing-the-image/adding-your-own-start-up-scripts","docs/6.customizing-the-image/3.adding-your-own-start-up-scripts",{"title":196,"path":197,"stem":198,"children":199,"page":55},"Troubleshooting","/docs/troubleshooting","docs/7.troubleshooting",[200,204],{"title":201,"path":202,"stem":203},"Common Issues","/docs/troubleshooting/common-issues","docs/7.troubleshooting/1.common-issues",{"title":205,"path":206,"stem":207},"Getting Help","/docs/troubleshooting/getting-help","docs/7.troubleshooting/2.getting-help",{"title":209,"path":210,"stem":211,"children":212,"page":55},"Reference","/docs/reference","docs/8.reference",[213,217],{"title":214,"path":215,"stem":216},"Environment Variable Specification","/docs/reference/environment-variable-specification","docs/8.reference/1.environment-variable-specification",{"title":218,"path":219,"stem":220},"Command Reference","/docs/reference/command-reference","docs/8.reference/2.command-reference",{"id":222,"title":175,"body":223,"description":1890,"extension":925,"links":1891,"meta":1892,"navigation":1277,"path":176,"redirect":1891,"seo":1895,"stem":177,"__hash__":1896},"docs/docs/5.guide/4.configuring-trusted-proxies.md",{"type":224,"value":225,"toc":1862},"minimark",[226,233,238,241,262,268,272,279,369,400,404,409,412,495,499,502,572,576,579,645,649,652,718,722,725,732,794,797,901,912,929,933,936,943,957,960,965,976,979,984,999,1003,1009,1038,1041,1045,1074,1078,1085,1089,1097,1100,1103,1107,1149,1158,1183,1233,1245,1250,1254,1477,1481,1672,1676,1858],[227,228,229],"lead-p",{},[230,231,232],"p",{},"When your application runs behind a load balancer, CDN, or reverse proxy, the web server sees the proxy's IP address instead of the actual visitor's IP. Trusted proxy configuration tells your web server which proxies to trust for forwarding the real client IP.",[234,235,237],"h2",{"id":236},"why-trusted-proxies-matter","Why Trusted Proxies Matter",[230,239,240],{},"Without proper trusted proxy configuration, your application will:",[242,243,244,248,251,254],"ul",{},[245,246,247],"li",{},"Log the proxy's IP address instead of the visitor's real IP",[245,249,250],{},"Have incorrect geolocation data",[245,252,253],{},"Potentially break rate limiting or IP-based security rules",[245,255,256,257,261],{},"Show incorrect information in Laravel's ",[258,259,260],"code",{},"request()->ip()"," or similar methods",[263,264,265],"warning",{},[230,266,267],{},"Never trust all IP addresses as proxies. Only trust specific proxy IPs that you control or know are legitimate (like your CDN provider).",[234,269,271],{"id":270},"available-options","Available Options",[230,273,274,275,278],{},"Set the ",[258,276,277],{},"TRUSTED_PROXY"," environment variable to one of the following values:",[280,281,282,295],"table",{},[283,284,285],"thead",{},[286,287,288,292],"tr",{},[289,290,291],"th",{},"Value",[289,293,294],{},"Description",[296,297,298,328,347,359],"tbody",{},[286,299,300,307],{},[301,302,303,306],"td",{},[258,304,305],{},"cloudflare"," (default)",[301,308,309,310,318,319,323,324,327],{},"Trusts ",[311,312,317],"a",{"href":313,"rel":314,"target":316},"https://www.cloudflare.com/ips/",[315],"nofollow","_blank","Cloudflare's IP ranges"," ",[320,321,322],"strong",{},"+ local Docker networks"," using the ",[258,325,326],{},"CF-Connecting-IP"," header",[286,329,330,335],{},[301,331,332],{},[258,333,334],{},"sucuri",[301,336,309,337,318,342,323,344,327],{},[311,338,341],{"href":339,"rel":340,"target":316},"https://docs.sucuri.net/website-firewall/sucuri-firewall-troubleshooting-guide/",[315],"Sucuri's IP ranges",[320,343,322],{},[258,345,346],{},"X-Forwarded-For",[286,348,349,354],{},[301,350,351],{},[258,352,353],{},"local",[301,355,356,357,327],{},"Trusts only private/local network ranges (Docker networks, localhost) using the ",[258,358,346],{},[286,360,361,366],{},[301,362,363],{},[258,364,365],{},"off",[301,367,368],{},"Disables trusted proxy configuration entirely",[370,371,372],"tip",{},[230,373,374,377,378,380,381,384,385,384,388,391,392,396,397,399],{},[320,375,376],{},"You don't need to choose between your CDN and local proxies."," All options (except ",[258,379,365],{},") automatically include Docker's internal network ranges (",[258,382,383],{},"10.0.0.0/8",", ",[258,386,387],{},"172.16.0.0/12",[258,389,390],{},"192.168.0.0/16","). This means if you're behind Cloudflare ",[393,394,395],"em",{},"and"," running a reverse proxy like Traefik or Caddy in Docker, just use ",[258,398,305],{}," — it already trusts both.",[234,401,403],{"id":402},"quick-start","Quick Start",[405,406,408],"h3",{"id":407},"using-cloudflare-default","Using Cloudflare (Default)",[230,410,411],{},"If you're using Cloudflare as your CDN/proxy, you don't need to change anything. The default configuration already trusts Cloudflare's IP ranges:",[413,414,419],"pre",{"className":415,"code":416,"filename":417,"language":418,"meta":10,"style":10},"language-yml shiki shiki-themes github-dark","services:\n  php:\n    image: serversideup/php:8.5-fpm-nginx\n    ports:\n      - \"80:8080\"\n    volumes:\n      - .:/var/www/html\n    # TRUSTED_PROXY defaults to \"cloudflare\"\n","compose.yml","yml",[258,420,421,434,442,455,463,472,480,488],{"__ignoreMap":10},[422,423,426,430],"span",{"class":424,"line":425},"line",1,[422,427,429],{"class":428},"s4JwU","services",[422,431,433],{"class":432},"s95oV",":\n",[422,435,437,440],{"class":424,"line":436},2,[422,438,439],{"class":428},"  php",[422,441,433],{"class":432},[422,443,445,448,451],{"class":424,"line":444},3,[422,446,447],{"class":428},"    image",[422,449,450],{"class":432},": ",[422,452,454],{"class":453},"sU2Wk","serversideup/php:8.5-fpm-nginx\n",[422,456,458,461],{"class":424,"line":457},4,[422,459,460],{"class":428},"    ports",[422,462,433],{"class":432},[422,464,466,469],{"class":424,"line":465},5,[422,467,468],{"class":432},"      - ",[422,470,471],{"class":453},"\"80:8080\"\n",[422,473,475,478],{"class":424,"line":474},6,[422,476,477],{"class":428},"    volumes",[422,479,433],{"class":432},[422,481,483,485],{"class":424,"line":482},7,[422,484,468],{"class":432},[422,486,487],{"class":453},".:/var/www/html\n",[422,489,491],{"class":424,"line":490},8,[422,492,494],{"class":493},"sAwPA","    # TRUSTED_PROXY defaults to \"cloudflare\"\n",[405,496,498],{"id":497},"using-sucuri","Using Sucuri",[230,500,501],{},"If you're using Sucuri as your web application firewall:",[413,503,506],{"className":415,"code":504,"filename":417,"highlights":505,"language":418,"meta":10,"style":10},"services:\n  php:\n    image: serversideup/php:8.5-fpm-nginx\n    ports:\n      - \"80:8080\"\n    volumes:\n      - .:/var/www/html\n    environment:\n      TRUSTED_PROXY: \"sucuri\"\n",[490],[258,507,508,514,520,528,534,540,546,552,561],{"__ignoreMap":10},[422,509,510,512],{"class":424,"line":425},[422,511,429],{"class":428},[422,513,433],{"class":432},[422,515,516,518],{"class":424,"line":436},[422,517,439],{"class":428},[422,519,433],{"class":432},[422,521,522,524,526],{"class":424,"line":444},[422,523,447],{"class":428},[422,525,450],{"class":432},[422,527,454],{"class":453},[422,529,530,532],{"class":424,"line":457},[422,531,460],{"class":428},[422,533,433],{"class":432},[422,535,536,538],{"class":424,"line":465},[422,537,468],{"class":432},[422,539,471],{"class":453},[422,541,542,544],{"class":424,"line":474},[422,543,477],{"class":428},[422,545,433],{"class":432},[422,547,548,550],{"class":424,"line":482},[422,549,468],{"class":432},[422,551,487],{"class":453},[422,553,556,559],{"class":554,"line":490},[424,555],"highlight",[422,557,558],{"class":428},"    environment",[422,560,433],{"class":432},[422,562,564,567,569],{"class":424,"line":563},9,[422,565,566],{"class":428},"      TRUSTED_PROXY",[422,568,450],{"class":432},[422,570,571],{"class":453},"\"sucuri\"\n",[405,573,575],{"id":574},"localdocker-networks-only","Local/Docker Networks Only",[230,577,578],{},"If you're running behind your own reverse proxy (like Traefik or Caddy) on the same Docker network:",[413,580,583],{"className":415,"code":581,"filename":417,"highlights":582,"language":418,"meta":10,"style":10},"services:\n  php:\n    image: serversideup/php:8.5-fpm-nginx\n    ports:\n      - \"80:8080\"\n    volumes:\n      - .:/var/www/html\n    environment:\n      TRUSTED_PROXY: \"local\"\n",[490],[258,584,585,591,597,605,611,617,623,629,636],{"__ignoreMap":10},[422,586,587,589],{"class":424,"line":425},[422,588,429],{"class":428},[422,590,433],{"class":432},[422,592,593,595],{"class":424,"line":436},[422,594,439],{"class":428},[422,596,433],{"class":432},[422,598,599,601,603],{"class":424,"line":444},[422,600,447],{"class":428},[422,602,450],{"class":432},[422,604,454],{"class":453},[422,606,607,609],{"class":424,"line":457},[422,608,460],{"class":428},[422,610,433],{"class":432},[422,612,613,615],{"class":424,"line":465},[422,614,468],{"class":432},[422,616,471],{"class":453},[422,618,619,621],{"class":424,"line":474},[422,620,477],{"class":428},[422,622,433],{"class":432},[422,624,625,627],{"class":424,"line":482},[422,626,468],{"class":432},[422,628,487],{"class":453},[422,630,632,634],{"class":631,"line":490},[424,555],[422,633,558],{"class":428},[422,635,433],{"class":432},[422,637,638,640,642],{"class":424,"line":563},[422,639,566],{"class":428},[422,641,450],{"class":432},[422,643,644],{"class":453},"\"local\"\n",[405,646,648],{"id":647},"disabling-trusted-proxies","Disabling Trusted Proxies",[230,650,651],{},"If you want to handle proxy configuration yourself or your application is directly exposed to the internet:",[413,653,656],{"className":415,"code":654,"filename":417,"highlights":655,"language":418,"meta":10,"style":10},"services:\n  php:\n    image: serversideup/php:8.5-fpm-nginx\n    ports:\n      - \"80:8080\"\n    volumes:\n      - .:/var/www/html\n    environment:\n      TRUSTED_PROXY: \"off\"\n",[490],[258,657,658,664,670,678,684,690,696,702,709],{"__ignoreMap":10},[422,659,660,662],{"class":424,"line":425},[422,661,429],{"class":428},[422,663,433],{"class":432},[422,665,666,668],{"class":424,"line":436},[422,667,439],{"class":428},[422,669,433],{"class":432},[422,671,672,674,676],{"class":424,"line":444},[422,673,447],{"class":428},[422,675,450],{"class":432},[422,677,454],{"class":453},[422,679,680,682],{"class":424,"line":457},[422,681,460],{"class":428},[422,683,433],{"class":432},[422,685,686,688],{"class":424,"line":465},[422,687,468],{"class":432},[422,689,471],{"class":453},[422,691,692,694],{"class":424,"line":474},[422,693,477],{"class":428},[422,695,433],{"class":432},[422,697,698,700],{"class":424,"line":482},[422,699,468],{"class":432},[422,701,487],{"class":453},[422,703,705,707],{"class":704,"line":490},[424,555],[422,706,558],{"class":428},[422,708,433],{"class":432},[422,710,711,713,715],{"class":424,"line":563},[422,712,566],{"class":428},[422,714,450],{"class":432},[422,716,717],{"class":453},"\"off\"\n",[234,719,721],{"id":720},"laravel-configuration","Laravel Configuration",[230,723,724],{},"While the Docker images handle the web server's trusted proxy configuration, Laravel also needs to know about trusted proxies at the application level.",[230,726,727,728,731],{},"Laravel includes a ",[258,729,730],{},"TrustProxies"," middleware that you should configure in your application. For most setups using our images, you can trust all proxies since the web server has already validated them:",[413,733,738],{"className":734,"code":735,"filename":736,"language":737,"meta":10,"style":10},"language-php shiki shiki-themes github-dark","->withMiddleware(function (Middleware $middleware) {\n    $middleware->trustProxies(at: '*');\n})\n","bootstrap/app.php","php",[258,739,740,766,789],{"__ignoreMap":10},[422,741,742,746,750,753,756,759,763],{"class":424,"line":425},[422,743,745],{"class":744},"snl16","->",[422,747,749],{"class":748},"svObZ","withMiddleware",[422,751,752],{"class":432},"(",[422,754,755],{"class":744},"function",[422,757,758],{"class":432}," (",[422,760,762],{"class":761},"sDLfK","Middleware",[422,764,765],{"class":432}," $middleware) {\n",[422,767,768,771,773,776,778,781,783,786],{"class":424,"line":436},[422,769,770],{"class":432},"    $middleware",[422,772,745],{"class":744},[422,774,775],{"class":748},"trustProxies",[422,777,752],{"class":432},[422,779,780],{"class":748},"at",[422,782,450],{"class":432},[422,784,785],{"class":453},"'*'",[422,787,788],{"class":432},");\n",[422,790,791],{"class":424,"line":444},[422,792,793],{"class":432},"})\n",[230,795,796],{},"Or if you prefer more control, configure specific headers:",[413,798,800],{"className":734,"code":799,"filename":736,"language":737,"meta":10,"style":10},"->withMiddleware(function (Middleware $middleware) {\n    $middleware->trustProxies(\n        at: '*',\n        headers: Request::HEADER_X_FORWARDED_FOR |\n                 Request::HEADER_X_FORWARDED_HOST |\n                 Request::HEADER_X_FORWARDED_PORT |\n                 Request::HEADER_X_FORWARDED_PROTO\n    );\n})\n",[258,801,802,818,829,841,860,872,883,892,897],{"__ignoreMap":10},[422,803,804,806,808,810,812,814,816],{"class":424,"line":425},[422,805,745],{"class":744},[422,807,749],{"class":748},[422,809,752],{"class":432},[422,811,755],{"class":744},[422,813,758],{"class":432},[422,815,762],{"class":761},[422,817,765],{"class":432},[422,819,820,822,824,826],{"class":424,"line":436},[422,821,770],{"class":432},[422,823,745],{"class":744},[422,825,775],{"class":748},[422,827,828],{"class":432},"(\n",[422,830,831,834,836,838],{"class":424,"line":444},[422,832,833],{"class":748},"        at",[422,835,450],{"class":432},[422,837,785],{"class":453},[422,839,840],{"class":432},",\n",[422,842,843,846,848,851,854,857],{"class":424,"line":457},[422,844,845],{"class":748},"        headers",[422,847,450],{"class":432},[422,849,850],{"class":761},"Request",[422,852,853],{"class":744},"::",[422,855,856],{"class":761},"HEADER_X_FORWARDED_FOR",[422,858,859],{"class":744}," |\n",[422,861,862,865,867,870],{"class":424,"line":465},[422,863,864],{"class":761},"                 Request",[422,866,853],{"class":744},[422,868,869],{"class":761},"HEADER_X_FORWARDED_HOST",[422,871,859],{"class":744},[422,873,874,876,878,881],{"class":424,"line":474},[422,875,864],{"class":761},[422,877,853],{"class":744},[422,879,880],{"class":761},"HEADER_X_FORWARDED_PORT",[422,882,859],{"class":744},[422,884,885,887,889],{"class":424,"line":482},[422,886,864],{"class":761},[422,888,853],{"class":744},[422,890,891],{"class":761},"HEADER_X_FORWARDED_PROTO\n",[422,893,894],{"class":424,"line":490},[422,895,896],{"class":432},"    );\n",[422,898,899],{"class":424,"line":563},[422,900,793],{"class":432},[370,902,903],{},[230,904,905,906,908,909,911],{},"For Cloudflare specifically, Laravel can use the ",[258,907,326],{}," header. The ",[258,910,856],{}," setting works because Cloudflare also sets this header.",[913,914],"u-button",{"ariaLabel":915,"className":916,"color":924,"label":915,"size":925,"target":316,"to":926,"trailing-icon":927,"variant":928},"Learn more about Laravel's TrustProxies middleware",[917,918,919,920,921,922,923],"font-bold","ring","ring-inset","ring-blue-600","text-blue-600","hover:ring-blue-500","hover:text-blue-500","primary","md","https://laravel.com/docs/requests#trusting-proxies","i-lucide-arrow-right","outline",[234,930,932],{"id":931},"how-it-works","How It Works",[405,934,935],{"id":305},"Cloudflare",[230,937,938,939,942],{},"When ",[258,940,941],{},"TRUSTED_PROXY=cloudflare",":",[242,944,945,948,954],{},[245,946,947],{},"Trusts Cloudflare's published IPv4 and IPv6 ranges",[245,949,950,951,953],{},"Uses the ",[258,952,326],{}," header to get the real client IP",[245,955,956],{},"Includes Docker network ranges for container-to-container communication",[405,958,959],{"id":334},"Sucuri",[230,961,938,962,942],{},[258,963,964],{},"TRUSTED_PROXY=sucuri",[242,966,967,970,974],{},[245,968,969],{},"Trusts Sucuri's WAF IP ranges",[245,971,950,972,953],{},[258,973,346],{},[245,975,956],{},[405,977,978],{"id":353},"Local",[230,980,938,981,942],{},[258,982,983],{},"TRUSTED_PROXY=local",[242,985,986,989,992,996],{},[245,987,988],{},"Trusts only private network ranges (RFC 1918)",[245,990,991],{},"Trusts localhost and IPv6 loopback addresses",[245,993,950,994,327],{},[258,995,346],{},[245,997,998],{},"Perfect for setups with your own reverse proxy on the same network",[234,1000,1002],{"id":1001},"security-considerations","Security Considerations",[1004,1005,1006],"caution",{},[230,1007,1008],{},"Incorrectly configuring trusted proxies can allow attackers to spoof their IP address by sending fake headers. Only trust IP ranges that you know are legitimate proxies.",[242,1010,1011,1020,1026],{},[245,1012,1013,1016,1017,1019],{},[320,1014,1015],{},"Don't trust all IPs",": Never set your web server to trust ",[258,1018,346],{}," from any IP address",[245,1021,1022,1025],{},[320,1023,1024],{},"Keep configurations updated",": CDN IP ranges can change over time. Our images are updated regularly, but if security is critical, verify the ranges match your provider's published list",[245,1027,1028,1031,1032,1034,1035,1037],{},[320,1029,1030],{},"Use the right option",": If you're not using Cloudflare or Sucuri, don't use those options. Use ",[258,1033,353],{}," if you have your own reverse proxy, or ",[258,1036,365],{}," if you don't need proxy trust",[234,1039,196],{"id":1040},"troubleshooting",[405,1042,1044],{"id":1043},"still-seeing-proxy-ip-instead-of-real-ip","Still seeing proxy IP instead of real IP",[1046,1047,1048,1054,1065],"ol",{},[245,1049,1050,1053],{},[320,1051,1052],{},"Check your CDN/proxy is in the trusted list",": Verify your proxy's IP is within the trusted ranges for your chosen option",[245,1055,1056,1059,1060,1062,1063],{},[320,1057,1058],{},"Check the header being used",": Different proxies use different headers. Cloudflare uses ",[258,1061,326],{},", while most others use ",[258,1064,346],{},[245,1066,1067,1070,1071,1073],{},[320,1068,1069],{},"Check Laravel configuration",": Remember to also configure Laravel's ",[258,1072,730],{}," middleware",[405,1075,1077],{"id":1076},"application-works-but-logs-show-wrong-ip","Application works but logs show wrong IP",[230,1079,1080,1081,1084],{},"Your web server might be configured correctly, but your application framework might need separate configuration. See the ",[311,1082,721],{"href":1083},"#laravel-configuration"," section above.",[405,1086,1088],{"id":1087},"need-to-trust-a-different-proxy-provider","Need to trust a different proxy provider",[230,1090,1091,1092,1096],{},"If your proxy provider isn't listed, you can create a custom configuration. See ",[311,1093,1095],{"href":1094},"#custom-trusted-proxy-configuration","Custom Trusted Proxy Configuration"," below.",[234,1098,1095],{"id":1099},"custom-trusted-proxy-configuration",[230,1101,1102],{},"If you're using a proxy provider that isn't included (like AWS ALB, Fastly, or a custom load balancer), you can create your own trusted proxy configuration.",[405,1104,1106],{"id":1105},"two-ways-to-add-custom-configs","Two Ways to Add Custom Configs",[280,1108,1109,1121],{},[283,1110,1111],{},[286,1112,1113,1116,1119],{},[289,1114,1115],{},"Method",[289,1117,1118],{},"Best For",[289,1120,932],{},[296,1122,1123,1136],{},[286,1124,1125,1130,1133],{},[301,1126,1127],{},[320,1128,1129],{},"Dockerfile (recommended)",[301,1131,1132],{},"Production deployments",[301,1134,1135],{},"Bakes the config into your image",[286,1137,1138,1143,1146],{},[301,1139,1140],{},[320,1141,1142],{},"Volume mount",[301,1144,1145],{},"Local development",[301,1147,1148],{},"Mount the file at runtime",[230,1150,1151,1152,1155,1156,942],{},"The examples below use the Dockerfile approach. To use a volume mount instead, simply replace the ",[258,1153,1154],{},"COPY"," instruction with a volume mount in your ",[258,1157,417],{},[413,1159,1161],{"className":415,"code":1160,"filename":417,"language":418,"meta":10,"style":10},"volumes:\n  # Mount syntax: ./local/path:/container/path:ro\n  - ./docker/trusted-proxy/aws-alb.conf:/etc/nginx/trusted-proxy/aws-alb.conf:ro\n",[258,1162,1163,1170,1175],{"__ignoreMap":10},[422,1164,1165,1168],{"class":424,"line":425},[422,1166,1167],{"class":428},"volumes",[422,1169,433],{"class":432},[422,1171,1172],{"class":424,"line":436},[422,1173,1174],{"class":493},"  # Mount syntax: ./local/path:/container/path:ro\n",[422,1176,1177,1180],{"class":424,"line":444},[422,1178,1179],{"class":432},"  - ",[422,1181,1182],{"class":453},"./docker/trusted-proxy/aws-alb.conf:/etc/nginx/trusted-proxy/aws-alb.conf:ro\n",[280,1184,1185,1195],{},[283,1186,1187],{},[286,1188,1189,1192],{},[289,1190,1191],{},"Variation",[289,1193,1194],{},"Config Path",[296,1196,1197,1209,1221],{},[286,1198,1199,1204],{},[301,1200,1201],{},[258,1202,1203],{},"fpm-nginx",[301,1205,1206],{},[258,1207,1208],{},"/etc/nginx/trusted-proxy/{name}.conf",[286,1210,1211,1216],{},[301,1212,1213],{},[258,1214,1215],{},"fpm-apache",[301,1217,1218],{},[258,1219,1220],{},"/etc/apache2/trusted-proxy/{name}.conf",[286,1222,1223,1228],{},[301,1224,1225],{},[258,1226,1227],{},"frankenphp",[301,1229,1230],{},[258,1231,1232],{},"/etc/frankenphp/trusted-proxy/{name}.caddyfile",[370,1234,1235],{},[230,1236,1237,1238,384,1240,384,1242,1244],{},"Always include Docker's internal network ranges (",[258,1239,383],{},[258,1241,387],{},[258,1243,390],{},") so container-to-container communication works correctly.",[263,1246,1247],{},[230,1248,1249],{},"Keep your custom IP ranges up to date. Cloud providers periodically update their IP ranges.",[405,1251,1253],{"id":1252},"fpm-nginx-custom-configuration","FPM-NGINX Custom Configuration",[1255,1256,1258,1291,1376],"code-tree",{"default-value":1257},"Dockerfile",[413,1259,1263],{"className":1260,"code":1261,"filename":1257,"language":1262,"meta":10,"style":10},"language-dockerfile shiki shiki-themes github-dark","FROM serversideup/php:8.5-fpm-nginx\n\n# Copy our custom trusted proxy configuration\nCOPY --chmod=644 docker/trusted-proxy/aws-alb.conf /etc/nginx/trusted-proxy/aws-alb.conf\n","dockerfile",[258,1264,1265,1273,1279,1284],{"__ignoreMap":10},[422,1266,1267,1270],{"class":424,"line":425},[422,1268,1269],{"class":744},"FROM",[422,1271,1272],{"class":432}," serversideup/php:8.5-fpm-nginx\n",[422,1274,1275],{"class":424,"line":436},[422,1276,1278],{"emptyLinePlaceholder":1277},true,"\n",[422,1280,1281],{"class":424,"line":444},[422,1282,1283],{"class":493},"# Copy our custom trusted proxy configuration\n",[422,1285,1286,1288],{"class":424,"line":457},[422,1287,1154],{"class":744},[422,1289,1290],{"class":432}," --chmod=644 docker/trusted-proxy/aws-alb.conf /etc/nginx/trusted-proxy/aws-alb.conf\n",[413,1292,1294],{"className":415,"code":1293,"filename":417,"language":418,"meta":10,"style":10},"services:\n  php:\n    build:\n      context: .\n      dockerfile: Dockerfile\n    ports:\n      - \"80:8080\"\n    volumes:\n      - .:/var/www/html\n    environment:\n      TRUSTED_PROXY: \"aws-alb\"\n",[258,1295,1296,1302,1308,1315,1325,1335,1341,1347,1353,1359,1366],{"__ignoreMap":10},[422,1297,1298,1300],{"class":424,"line":425},[422,1299,429],{"class":428},[422,1301,433],{"class":432},[422,1303,1304,1306],{"class":424,"line":436},[422,1305,439],{"class":428},[422,1307,433],{"class":432},[422,1309,1310,1313],{"class":424,"line":444},[422,1311,1312],{"class":428},"    build",[422,1314,433],{"class":432},[422,1316,1317,1320,1322],{"class":424,"line":457},[422,1318,1319],{"class":428},"      context",[422,1321,450],{"class":432},[422,1323,1324],{"class":761},".\n",[422,1326,1327,1330,1332],{"class":424,"line":465},[422,1328,1329],{"class":428},"      dockerfile",[422,1331,450],{"class":432},[422,1333,1334],{"class":453},"Dockerfile\n",[422,1336,1337,1339],{"class":424,"line":474},[422,1338,460],{"class":428},[422,1340,433],{"class":432},[422,1342,1343,1345],{"class":424,"line":482},[422,1344,468],{"class":432},[422,1346,471],{"class":453},[422,1348,1349,1351],{"class":424,"line":490},[422,1350,477],{"class":428},[422,1352,433],{"class":432},[422,1354,1355,1357],{"class":424,"line":563},[422,1356,468],{"class":432},[422,1358,487],{"class":453},[422,1360,1362,1364],{"class":424,"line":1361},10,[422,1363,558],{"class":428},[422,1365,433],{"class":432},[422,1367,1369,1371,1373],{"class":424,"line":1368},11,[422,1370,566],{"class":428},[422,1372,450],{"class":432},[422,1374,1375],{"class":453},"\"aws-alb\"\n",[413,1377,1382],{"className":1378,"code":1379,"filename":1380,"language":1381,"meta":10,"style":10},"language-conf shiki shiki-themes github-dark","##\n# AWS ALB - Trusted Proxy (example)\n##\n\n# Configure docker networks and loopback addresses\nset_real_ip_from 10.0.0.0/8;\nset_real_ip_from 172.16.0.0/12;\nset_real_ip_from 192.168.0.0/16;\nset_real_ip_from 127.0.0.1/8;\nset_real_ip_from ::1;\nset_real_ip_from fd00::/8;\n\n# Add your proxy provider's IP ranges\n# Example: AWS us-east-1 ranges (check AWS docs for current IPs)\nset_real_ip_from 3.0.0.0/8;\n\n# Set the header your proxy uses\nreal_ip_header X-Forwarded-For;\n","docker/trusted-proxy/aws-alb.conf","conf",[258,1383,1384,1389,1394,1398,1402,1407,1412,1417,1422,1427,1432,1437,1442,1448,1454,1460,1465,1471],{"__ignoreMap":10},[422,1385,1386],{"class":424,"line":425},[422,1387,1388],{},"##\n",[422,1390,1391],{"class":424,"line":436},[422,1392,1393],{},"# AWS ALB - Trusted Proxy (example)\n",[422,1395,1396],{"class":424,"line":444},[422,1397,1388],{},[422,1399,1400],{"class":424,"line":457},[422,1401,1278],{"emptyLinePlaceholder":1277},[422,1403,1404],{"class":424,"line":465},[422,1405,1406],{},"# Configure docker networks and loopback addresses\n",[422,1408,1409],{"class":424,"line":474},[422,1410,1411],{},"set_real_ip_from 10.0.0.0/8;\n",[422,1413,1414],{"class":424,"line":482},[422,1415,1416],{},"set_real_ip_from 172.16.0.0/12;\n",[422,1418,1419],{"class":424,"line":490},[422,1420,1421],{},"set_real_ip_from 192.168.0.0/16;\n",[422,1423,1424],{"class":424,"line":563},[422,1425,1426],{},"set_real_ip_from 127.0.0.1/8;\n",[422,1428,1429],{"class":424,"line":1361},[422,1430,1431],{},"set_real_ip_from ::1;\n",[422,1433,1434],{"class":424,"line":1368},[422,1435,1436],{},"set_real_ip_from fd00::/8;\n",[422,1438,1440],{"class":424,"line":1439},12,[422,1441,1278],{"emptyLinePlaceholder":1277},[422,1443,1445],{"class":424,"line":1444},13,[422,1446,1447],{},"# Add your proxy provider's IP ranges\n",[422,1449,1451],{"class":424,"line":1450},14,[422,1452,1453],{},"# Example: AWS us-east-1 ranges (check AWS docs for current IPs)\n",[422,1455,1457],{"class":424,"line":1456},15,[422,1458,1459],{},"set_real_ip_from 3.0.0.0/8;\n",[422,1461,1463],{"class":424,"line":1462},16,[422,1464,1278],{"emptyLinePlaceholder":1277},[422,1466,1468],{"class":424,"line":1467},17,[422,1469,1470],{},"# Set the header your proxy uses\n",[422,1472,1474],{"class":424,"line":1473},18,[422,1475,1476],{},"real_ip_header X-Forwarded-For;\n",[405,1478,1480],{"id":1479},"fpm-apache-custom-configuration","FPM-Apache Custom Configuration",[1255,1482,1483,1510,1586],{"default-value":1257},[413,1484,1486],{"className":1260,"code":1485,"filename":1257,"language":1262,"meta":10,"style":10},"FROM serversideup/php:8.5-fpm-apache\n\n# Copy our custom trusted proxy configuration\nCOPY --chmod=644 docker/trusted-proxy/aws-alb.conf /etc/apache2/trusted-proxy/aws-alb.conf\n",[258,1487,1488,1495,1499,1503],{"__ignoreMap":10},[422,1489,1490,1492],{"class":424,"line":425},[422,1491,1269],{"class":744},[422,1493,1494],{"class":432}," serversideup/php:8.5-fpm-apache\n",[422,1496,1497],{"class":424,"line":436},[422,1498,1278],{"emptyLinePlaceholder":1277},[422,1500,1501],{"class":424,"line":444},[422,1502,1283],{"class":493},[422,1504,1505,1507],{"class":424,"line":457},[422,1506,1154],{"class":744},[422,1508,1509],{"class":432}," --chmod=644 docker/trusted-proxy/aws-alb.conf /etc/apache2/trusted-proxy/aws-alb.conf\n",[413,1511,1512],{"className":415,"code":1293,"filename":417,"language":418,"meta":10,"style":10},[258,1513,1514,1520,1526,1532,1540,1548,1554,1560,1566,1572,1578],{"__ignoreMap":10},[422,1515,1516,1518],{"class":424,"line":425},[422,1517,429],{"class":428},[422,1519,433],{"class":432},[422,1521,1522,1524],{"class":424,"line":436},[422,1523,439],{"class":428},[422,1525,433],{"class":432},[422,1527,1528,1530],{"class":424,"line":444},[422,1529,1312],{"class":428},[422,1531,433],{"class":432},[422,1533,1534,1536,1538],{"class":424,"line":457},[422,1535,1319],{"class":428},[422,1537,450],{"class":432},[422,1539,1324],{"class":761},[422,1541,1542,1544,1546],{"class":424,"line":465},[422,1543,1329],{"class":428},[422,1545,450],{"class":432},[422,1547,1334],{"class":453},[422,1549,1550,1552],{"class":424,"line":474},[422,1551,460],{"class":428},[422,1553,433],{"class":432},[422,1555,1556,1558],{"class":424,"line":482},[422,1557,468],{"class":432},[422,1559,471],{"class":453},[422,1561,1562,1564],{"class":424,"line":490},[422,1563,477],{"class":428},[422,1565,433],{"class":432},[422,1567,1568,1570],{"class":424,"line":563},[422,1569,468],{"class":432},[422,1571,487],{"class":453},[422,1573,1574,1576],{"class":424,"line":1361},[422,1575,558],{"class":428},[422,1577,433],{"class":432},[422,1579,1580,1582,1584],{"class":424,"line":1368},[422,1581,566],{"class":428},[422,1583,450],{"class":432},[422,1585,1375],{"class":453},[413,1587,1589],{"className":1378,"code":1588,"filename":1380,"language":1381,"meta":10,"style":10},"##\n# AWS ALB - Trusted Proxy (example)\n##\n\n# Set the header your proxy uses\nRemoteIPHeader X-Forwarded-For\n\n# Configure docker networks\nRemoteIPTrustedProxy 10.0.0.0/8\nRemoteIPTrustedProxy 172.16.0.0/12\nRemoteIPTrustedProxy 192.168.0.0/16\nRemoteIPTrustedProxy 127.0.0.1/8\nRemoteIPTrustedProxy ::1\nRemoteIPTrustedProxy fd00::/8\n\n# Add your proxy provider's IP ranges\n# Example: AWS us-east-1 ranges (check AWS docs for current IPs)\nRemoteIPTrustedProxy 3.0.0.0/8\n",[258,1590,1591,1595,1599,1603,1607,1611,1616,1620,1625,1630,1635,1640,1645,1650,1655,1659,1663,1667],{"__ignoreMap":10},[422,1592,1593],{"class":424,"line":425},[422,1594,1388],{},[422,1596,1597],{"class":424,"line":436},[422,1598,1393],{},[422,1600,1601],{"class":424,"line":444},[422,1602,1388],{},[422,1604,1605],{"class":424,"line":457},[422,1606,1278],{"emptyLinePlaceholder":1277},[422,1608,1609],{"class":424,"line":465},[422,1610,1470],{},[422,1612,1613],{"class":424,"line":474},[422,1614,1615],{},"RemoteIPHeader X-Forwarded-For\n",[422,1617,1618],{"class":424,"line":482},[422,1619,1278],{"emptyLinePlaceholder":1277},[422,1621,1622],{"class":424,"line":490},[422,1623,1624],{},"# Configure docker networks\n",[422,1626,1627],{"class":424,"line":563},[422,1628,1629],{},"RemoteIPTrustedProxy 10.0.0.0/8\n",[422,1631,1632],{"class":424,"line":1361},[422,1633,1634],{},"RemoteIPTrustedProxy 172.16.0.0/12\n",[422,1636,1637],{"class":424,"line":1368},[422,1638,1639],{},"RemoteIPTrustedProxy 192.168.0.0/16\n",[422,1641,1642],{"class":424,"line":1439},[422,1643,1644],{},"RemoteIPTrustedProxy 127.0.0.1/8\n",[422,1646,1647],{"class":424,"line":1444},[422,1648,1649],{},"RemoteIPTrustedProxy ::1\n",[422,1651,1652],{"class":424,"line":1450},[422,1653,1654],{},"RemoteIPTrustedProxy fd00::/8\n",[422,1656,1657],{"class":424,"line":1456},[422,1658,1278],{"emptyLinePlaceholder":1277},[422,1660,1661],{"class":424,"line":1462},[422,1662,1447],{},[422,1664,1665],{"class":424,"line":1467},[422,1666,1453],{},[422,1668,1669],{"class":424,"line":1473},[422,1670,1671],{},"RemoteIPTrustedProxy 3.0.0.0/8\n",[405,1673,1675],{"id":1674},"frankenphp-custom-configuration","FrankenPHP Custom Configuration",[1255,1677,1678,1705,1781],{"default-value":1257},[413,1679,1681],{"className":1260,"code":1680,"filename":1257,"language":1262,"meta":10,"style":10},"FROM serversideup/php:8.5-frankenphp\n\n# Copy our custom trusted proxy configuration\nCOPY --chmod=644 docker/trusted-proxy/aws-alb.caddyfile /etc/frankenphp/trusted-proxy/aws-alb.caddyfile\n",[258,1682,1683,1690,1694,1698],{"__ignoreMap":10},[422,1684,1685,1687],{"class":424,"line":425},[422,1686,1269],{"class":744},[422,1688,1689],{"class":432}," serversideup/php:8.5-frankenphp\n",[422,1691,1692],{"class":424,"line":436},[422,1693,1278],{"emptyLinePlaceholder":1277},[422,1695,1696],{"class":424,"line":444},[422,1697,1283],{"class":493},[422,1699,1700,1702],{"class":424,"line":457},[422,1701,1154],{"class":744},[422,1703,1704],{"class":432}," --chmod=644 docker/trusted-proxy/aws-alb.caddyfile /etc/frankenphp/trusted-proxy/aws-alb.caddyfile\n",[413,1706,1707],{"className":415,"code":1293,"filename":417,"language":418,"meta":10,"style":10},[258,1708,1709,1715,1721,1727,1735,1743,1749,1755,1761,1767,1773],{"__ignoreMap":10},[422,1710,1711,1713],{"class":424,"line":425},[422,1712,429],{"class":428},[422,1714,433],{"class":432},[422,1716,1717,1719],{"class":424,"line":436},[422,1718,439],{"class":428},[422,1720,433],{"class":432},[422,1722,1723,1725],{"class":424,"line":444},[422,1724,1312],{"class":428},[422,1726,433],{"class":432},[422,1728,1729,1731,1733],{"class":424,"line":457},[422,1730,1319],{"class":428},[422,1732,450],{"class":432},[422,1734,1324],{"class":761},[422,1736,1737,1739,1741],{"class":424,"line":465},[422,1738,1329],{"class":428},[422,1740,450],{"class":432},[422,1742,1334],{"class":453},[422,1744,1745,1747],{"class":424,"line":474},[422,1746,460],{"class":428},[422,1748,433],{"class":432},[422,1750,1751,1753],{"class":424,"line":482},[422,1752,468],{"class":432},[422,1754,471],{"class":453},[422,1756,1757,1759],{"class":424,"line":490},[422,1758,477],{"class":428},[422,1760,433],{"class":432},[422,1762,1763,1765],{"class":424,"line":563},[422,1764,468],{"class":432},[422,1766,487],{"class":453},[422,1768,1769,1771],{"class":424,"line":1361},[422,1770,558],{"class":428},[422,1772,433],{"class":432},[422,1774,1775,1777,1779],{"class":424,"line":1368},[422,1776,566],{"class":428},[422,1778,450],{"class":432},[422,1780,1375],{"class":453},[413,1782,1787],{"className":1783,"code":1784,"filename":1785,"language":1786,"meta":10,"style":10},"language-caddyfile shiki shiki-themes github-dark","servers {\n    # Trust Docker/private networks + loopback\n    trusted_proxies static \\\n10.0.0.0/8 \\\n172.16.0.0/12 \\\n192.168.0.0/16 \\\n127.0.0.1/8 \\\n::1 \\\nfd00::/8 \\\n3.0.0.0/8\n\n    # Set the header your proxy uses\n    client_ip_headers X-Forwarded-For\n}\n","docker/trusted-proxy/aws-alb.caddyfile","caddyfile",[258,1788,1789,1794,1799,1804,1809,1814,1819,1824,1829,1834,1839,1843,1848,1853],{"__ignoreMap":10},[422,1790,1791],{"class":424,"line":425},[422,1792,1793],{},"servers {\n",[422,1795,1796],{"class":424,"line":436},[422,1797,1798],{},"    # Trust Docker/private networks + loopback\n",[422,1800,1801],{"class":424,"line":444},[422,1802,1803],{},"    trusted_proxies static \\\n",[422,1805,1806],{"class":424,"line":457},[422,1807,1808],{},"10.0.0.0/8 \\\n",[422,1810,1811],{"class":424,"line":465},[422,1812,1813],{},"172.16.0.0/12 \\\n",[422,1815,1816],{"class":424,"line":474},[422,1817,1818],{},"192.168.0.0/16 \\\n",[422,1820,1821],{"class":424,"line":482},[422,1822,1823],{},"127.0.0.1/8 \\\n",[422,1825,1826],{"class":424,"line":490},[422,1827,1828],{},"::1 \\\n",[422,1830,1831],{"class":424,"line":563},[422,1832,1833],{},"fd00::/8 \\\n",[422,1835,1836],{"class":424,"line":1361},[422,1837,1838],{},"3.0.0.0/8\n",[422,1840,1841],{"class":424,"line":1368},[422,1842,1278],{"emptyLinePlaceholder":1277},[422,1844,1845],{"class":424,"line":1439},[422,1846,1847],{},"    # Set the header your proxy uses\n",[422,1849,1850],{"class":424,"line":1444},[422,1851,1852],{},"    client_ip_headers X-Forwarded-For\n",[422,1854,1855],{"class":424,"line":1450},[422,1856,1857],{},"}\n",[1859,1860,1861],"style",{},"html pre.shiki code .s4JwU, html code.shiki .s4JwU{--shiki-default:#85E89D}html pre.shiki code .s95oV, html code.shiki .s95oV{--shiki-default:#E1E4E8}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .snl16, html code.shiki .snl16{--shiki-default:#F97583}html pre.shiki code .svObZ, html code.shiki .svObZ{--shiki-default:#B392F0}html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}",{"title":10,"searchDepth":436,"depth":436,"links":1863},[1864,1865,1866,1872,1873,1878,1879,1884],{"id":236,"depth":436,"text":237},{"id":270,"depth":436,"text":271},{"id":402,"depth":436,"text":403,"children":1867},[1868,1869,1870,1871],{"id":407,"depth":444,"text":408},{"id":497,"depth":444,"text":498},{"id":574,"depth":444,"text":575},{"id":647,"depth":444,"text":648},{"id":720,"depth":436,"text":721},{"id":931,"depth":436,"text":932,"children":1874},[1875,1876,1877],{"id":305,"depth":444,"text":935},{"id":334,"depth":444,"text":959},{"id":353,"depth":444,"text":978},{"id":1001,"depth":436,"text":1002},{"id":1040,"depth":436,"text":196,"children":1880},[1881,1882,1883],{"id":1043,"depth":444,"text":1044},{"id":1076,"depth":444,"text":1077},{"id":1087,"depth":444,"text":1088},{"id":1099,"depth":436,"text":1095,"children":1885},[1886,1887,1888,1889],{"id":1105,"depth":444,"text":1106},{"id":1252,"depth":444,"text":1253},{"id":1479,"depth":444,"text":1480},{"id":1674,"depth":444,"text":1675},"Learn how to configure trusted proxies to get accurate client IP addresses when running behind load balancers, CDNs, or reverse proxies.",null,{"head":1893,"layout":7},{"title":1894},"Configuring Trusted Proxies - Docker PHP - Server Side Up",{"title":175,"description":1890},"UXcKQwdoxZij6vaOkezUYd7yJQTnA_c-od5b1YZx8wg",[1898,1900],{"title":171,"path":172,"stem":173,"description":1899,"children":-1},"Eliminate the headache of file permissions when working with PHP + Docker.",{"title":184,"path":185,"stem":186,"description":1901,"children":-1},"Learn how to change common PHP settings with environment variables or your own php.ini file.",1776367063573]