map $http_user_agent $outdated { default 0; "~MSIE [1-10]\." 1; "~Trident/[5-7]\." 1; "~Mozilla.*Firefox/[1-9]\." 1; "~Mozilla.*Firefox/[0-2][0-9]\." 1; "~Mozilla.*Firefox/3[0-1]\." 1; "~Opera.*Version/[0-9]\." 1; "~Opera.*Version/[0-1][0-9]\." 1; "~Opera.*Version/2[0-1]\." 1; "~AppleWebKit.*Version/[0-6]\..*Safari" 1; "~Chrome/[0-9]\." 1; "~Chrome/[0-2][0-9]\." 1; "~Chrome/3[0-3]\." 1; } map $http_user_agent $prerender { default 0; "~*linkedinbot" 1; } server { listen 8080 default_server; root /usr/share/nginx/html/; # prerender news post for linkedin location ~ ^/actualites/details/(.*)$ { if ($prerender = 1) { # For use of proxy_pass within a regular expression location, cf. https://stackoverflow.com/a/53354944 proxy_pass http://172.17.0.1:8030/api/render/$1; } try_files $uri $uri/ /index.html; } location /data-grandlyon-cities { proxy_pass https://data.grandlyon.com/fr/datapusher/ws/grandlyon/adr_voie_lieu.adrcomgl/all.json; } location / { # Redirect outdated nav if ($outdated = 1){ rewrite ^ /outdated.html break; } # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. # Angular routed apps must fall back to index.html ( https://angular.io/guide/deployment#server-configuration ) try_files $uri $uri/ /index.html; } location /api { proxy_pass http://host.docker.internal:3000; } location /base-adresse/base-adresse-nationale/streets { proxy_pass https://passerelle.formulaireextranet.grandlyon.com/base-adresse/base-adresse-nationale/streets; } location /geocoding/photon/api { proxy_pass https://download.data.grandlyon.com/geocoding/photon/api; } location /reverse { proxy_pass https://api-adresse.data.gouv.fr/reverse; } location /wfs/grandlyon { proxy_pass https://download.data.grandlyon.com/wfs/grandlyon; } location ~* (/ghost) { expires epoch; proxy_no_cache 1; proxy_pass http://host.docker.internal:2368; } # REALLY important for JavaScript modules (type="module") to work as expected!!! location ~ \.js { add_header Content-Type text/javascript; } }