Hi Francis, Its a brand new server setup.
I have no problem sharing the config files - ill just sanitize the actual websites. But everything else is 100% as is. Here is the full nginx.conf file from /etc/nginx cat /etc/nginx/nginx.conf user www-data; worker_processes 1; worker_rlimit_nofile 100000; pid /run/nginx.pid; events { worker_connections 1024; multi_accept on; } http { ## # EasyEngine Settings ## sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 15; types_hash_max_size 2048; server_tokens off; reset_timedout_connection on; # add_header X-Powered-By "EasyEngine"; add_header rt-Fastcgi-Cache $upstream_cache_status; # Limit Request limit_req_status 403; limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; # Proxy Settings # set_real_ip_from proxy-server-ip; # real_ip_header X-Forwarded-For; fastcgi_read_timeout 300; client_max_body_size 100m; ## # SSL Settings ## ssl_session_cache shared:SSL:20m; ssl_session_timeout 10m; ssl_prefer_server_ciphers on; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ## # Basic Settings ## # server_names_hash_bucket_size 64; # server_name_in_redirect off; include /etc/nginx/mime.types; default_type application/octet-stream; ## # Logging Settings ## access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; # Log format Settings log_format rt_cache '$remote_addr $upstream_response_time $upstream_cache_status [$time_local] ' '$http_host "$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent"'; ## # Gzip Settings ## gzip on; gzip_disable "msie6"; gzip_vary on; gzip_proxied any; gzip_comp_level 2; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_types application/atom+xml application/javascript application/json application/rss+xml application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/svg+xml image/x-icon text/css text/plain text/x-component text/xml text/javascript; ## # Cache Settings ## add_header Fastcgi-Cache $upstream_cache_status; fastcgi_cache_key "$scheme$request_method$host$request_uri"; fastcgi_cache_use_stale error timeout invalid_header http_500; fastcgi_ignore_headers Cache-Control Expires Set-Cookie; ## # Virtual Host Configs ## include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; server { listen 80 default_server; server_name _; return 444; } } Here is the full config for website.com - that does need access to phpmyadmin and does have an extra login prompt before /phpmyadmin is shown (which is what th e location /phpmyadmin block dictates cat /etc/nginx/sites-available/website.com fastcgi_cache_path /var/www/html/website.com/cache levels=1:2 keys_zone=website.com:100m inactive=60m; server { server_name website.com www.website.com; access_log /var/www/html/website.com/logs/access.log; error_log /var/www/html/website.com/logs/error.log; root /var/www/html/website.com/public/; index index.php index.html index.htm; set $skip_cache 0; if ($request_method = POST) { set $skip_cache 1; } if ($query_string != "") { set $skip_cache 1; } if ($request_uri ~* "/wp-admin/|/phpmyadmin|/xmlrpc.php|wp-.*.php|/feed/|index.php|sitemap(_index)?.xml") { set $skip_cache 1; } if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") { set $skip_cache 1; } if ($http_cookie ~* "PHPSESSID"){ set $skip_cache 1; } location / { try_files $uri $uri/ /index.php?$args; } location /phpmyadmin { auth_basic "Admin Login"; auth_basic_user_file /etc/nginx/allow_phpmyadmin; } location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; fastcgi_index index.php; include fastcgi_params; fastcgi_cache_bypass $skip_cache; fastcgi_no_cache $skip_cache; fastcgi_cache magentafp.com; fastcgi_cache_valid 60m; } location ~ /purge(/.*) { fastcgi_cache_purge website.com "$scheme$request_method$host$1"; } } Here is the full config for website1.com - that doesnt need access to phpmyadmin - and thus doesnt have the location /phpmyamin block in it cat /etc/nginx/sites-available/fulgent.co.uk fastcgi_cache_path /var/www/html/website1.com/cache levels=1:2 keys_zone=website1.com:100m inactive=60m; server { server_name website1.com www.website1.com; access_log /var/www/html/website1.com/logs/access.log; error_log /var/www/html/website1.com/logs/error.log; root /var/www/html/website1.com/public/; index index.php index.html index.htm; set $skip_cache 0; if ($request_method = POST) { set $skip_cache 1; } if ($query_string != "") { set $skip_cache 1; } if ($request_uri ~* "/wp-admin/|/phpmyadmin|/xmlrpc.php|wp-.*.php|/feed/|index.php|sitemap(_index)?.xml") { set $skip_cache 1; } if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") { set $skip_cache 1; } if ($http_cookie ~* £PHPSESSID"){ set $skip_cache 1; } location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; fastcgi_index index.php; include fastcgi_params; fastcgi_cache_bypass $skip_cache; fastcgi_no_cache $skip_cache; fastcgi_cache magentafp.com; fastcgi_cache_valid 60m; } location ~ /purge(/.*) { fastcgi_cache_purge website1.com "$scheme$request_method$host$1"; } } I have made no changes to any phpmyadmin config files. If i go to website1.com/phpmyadmin - the phpmyadmin login page is served. There are no changes to the url - it stays website1.com/phpmyadmin This is the article i followd to install an secure phpmyadmin - i did everything on that page except change the /phpmyadmin location name. (this is where the symlink came into it) So to me that symlink tells nginx too server phpmyadmin php pages for the web server - am i correct? If i remove that symlink - and then just create symlinks for the websites themselves - ive found it doesnt make a difference. eg - a symlink for website.com exisits pointing to /usr/share/phpmyadmin. So im telling nginx to serve phpmyadmin php files for that website only and not the whole server which the /usr/share/phpmyadmin /usr/share/nginx/html symlink does. Here is the output of nginx -T | grep 'server\|location' as requested (ive cut out website2 and website3 bits as they are not relevant as they are just copies of .com and 1.com (.com and 2.com need access 1.com and 3.com dont nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful server_tokens off; # set_real_ip_from proxy-server-ip; ssl_prefer_server_ciphers on; # server_names_hash_bucket_size 64; # server_name_in_redirect off; server { listen 80 default_server; server_name _; # server { # server { server { server_name website.com www.website.com; location / { location /phpmyadmin { location ~ \.php$ { location ~ /purge(/.*) { fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name; server { server_name website1.com www.website1.com; location / { location ~ \.php$ { location ~ /purge(/.*) { fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name; Thanks for your assistance. Posted at Nginx Forum: https://forum.nginx.org/read.php?2,270105,270134#msg-270134 _______________________________________________ nginx mailing list nginx@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx