skip to Main Content

i try redirect to proxy-server nginx.

        location /phpmyadmin {
        proxy_http_version 1.1;
        proxy_pass https://${PMA}:5000/;
        proxy_set_header Host      $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

But i get error:

nginx: [emerg] invalid number of arguments in "proxy_set_header" directive in /etc/nginx/nginx.conf:26

full code for inspect error in this listing, because i’m real can’t find some error’s (${env} = correctry changing in script

user root;
worker_processes auto;
pcre_jit on;

events {
    worker_connections 1024;
}

http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;
    keepalive_timeout 3000;
    sendfile on;
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;
    server {
        listen 443 ssl;
        listen [::]:443 ssl;
        ssl_certificate /etc/ssl/nginx.crt;
        ssl_certificate_key /etc/ssl/nginx.key;
        root /home;
        index default.html /default.html;
        location /phpmyadmin {
            proxy_http_version 1.1;
            proxy_pass https://${PMA}:5000/;
            proxy_set_header Host $host;
             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
             proxy_set_header X-Real-IP $remote_addr;
             proxy_set_header X-Forwarded-Proto https;
        }
        location /wordpress {
            return 307 http://${WP}:5050/;
        }
        location / {
            try_files /default.html default.html default.htm;
        }
    }
    server {
        listen 80;
        listen [::]:80;

        return 301 https://$host$request_uri;
    }
}
daemon off;

how much simvols need for post)

2

Answers


  1. Chosen as BEST ANSWER

    I used envsubst for environment replacing, and this util tried swap $host and other nginx envs, solved with:

    envsubst '$WP $PMA' < nginx.template.conf > nginx.ready.conf; rm nginx.template.conf
    

  2. Expanding on the working answer from @mikhail-prigorodov:

    The situation described by the OP arises when using the Nginx Docker container with Docker Compose. In the documentation, it reads:

    Out-of-the-box, nginx doesn’t support environment variables inside most configuration blocks. But this image has a function, which will extract environment variables before nginx starts.

    So, if you are using environment variables in your docker-compose.yml as part of a 12-Factor App design, you have to figure out how to get them into your Nginx config file properly.

    The solution in the Nginx Docker documentation is to run envsubst on a template configuration file and send the output to the Nginx config file. The Dockerfile syntax, which is mentioned in this GitHub issue is:

    CMD envsubst < /etc/nginx/templates/default.conf.template > /etc/nginx/conf.d/default.conf && exec nginx -g 'daemon off;'
    

    But that solution runs into a problem if you have Nginx-defined variables AND environment variable placeholders in your configuration template. In the directory where I’m building my Nginx container (where my Dockerfile is), I have a templates directory with a file called default.conf.template, as directed in the documentation. The file contains Nginx variables and environment variables. For example:

    proxy_set_header Host               $host;
    proxy_set_header X-Real-IP          $remote_addr;
    
    location /static {
        alias /usr/share/nginx/html/${STATIC_DIR};
    }
    

    The problem (I think) is that envsubst is looking for the "$" character that marks the start of the environment variables. In any case, you’ll find that after running envsubst successfully, each line in your new Nginx config file that has a Nginx-defined variable (leading "$") in the template gives an error when you try and start Nginx.

    To solve this problem, use the syntax provided by @mikhail-prigorodov. Applied to my example:

    CMD envsubst '$STATIC_DIR' < /etc/nginx/templates/default.conf.template > /etc/nginx/conf.d/default.conf && exec nginx -g 'daemon off;'
    

    This was the solution that worked for me after hours of frustration.

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