skip to Main Content

In an apache config file how can i concatenate two strings?

For example:

"hello" + "world"
// "helloworld"

Why?

One might want to do this to handle large Headers such as a Content-Security-Policy below is an example of my CSP. You can see it is nicely formatted for maintainability but when being sent in the Headers it has unwanted whitespace.

Header set Content-Security-Policy "
;default-src
    'self'
;child-src
    'self'
;connect-src
    'self'
;font-src
    'self'
    https://*.gstatic.com
;form-action
    'self';
;frame-ancestors
    'self'
;frame-src
    'self'
;img-src
    'self'
    https://www.google.com/s2/favicons
    https://www.google-analytics.com
    https://*.gstatic.com
    https://*.googleapis.com
;object-src
    'none'
;script-src
    'self'
    'unsafe-eval'
    https://www.google-analytics.com
    https://*.googleapis.com
;style-src
    'self'
    'unsafe-inline'
    https://*.googleapis.com
;
"

5

Answers


  1. OIDCScope "profile email openid offline_access"
    OIDCRemoteUserClaim  sub
    
    <Location "/app2">
        AuthType openid-connect
        Require valid-user
        ProxyPass   "http://192.168.10.237/myapp"
        ProxyPassReverse  "http://192.168.10.237/myapp"
    
        RewriteEngine On
        RewriteRule .* - [E=PROXY_USER:%{LA-U:REMOTE_USER}] 
        RequestHeader set REMOTE_USER  %{PROXY_USER}e
    </Location>
    
    </VirtualHost>
    
    Login or Signup to reply.
  2. I think you can declare variable like this : https://stackoverflow.com/a/15731921/6663198
    Then, you can easily concatenate your variables

    Login or Signup to reply.
  3. My best guess is to use either setenv or define directives to declare and define values and then simply refer it using ${VAR} syntax as noted here.

    In principle, the below should work.

    $httpd -DTestCaseOne
    

    <IfDefine TestCaseOne>
      Define dir_name_one media
      Define dir_name_two images
    </IfDefine>
    

    Include "/etc/httpd/sites/${dir_name_one}-${dir_name_two}/env.conf"
    

    The server version for above references is – Apache 2.4

    Login or Signup to reply.
  4. You can try like this:

    set $text = 'text';  
    set $additional "${text}additional";
    
    Login or Signup to reply.
  5. So far the best I managed is to post-edit* the Header

    Note the extra space before the new-line char

    Header set Content-Security-Policy "
    ;default-src 
        'self' 
    ;child-src 
        'self' 
    ;connect-src 
        'self' 
    "
    
    # Remove unwanted whitespaces
    Header edit* Content-Security-Policy "ssss" ""
    

    not 100% great, a bit expensive and could back-fire a bit, but well this is a way to do it

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search