Goal
-
We have multiple mini services going on mainly in php/laravel and nodejs (express)
-
I don’t want to manage different servers yet want to give them access differently so they can see each other’s project code.
-
I am using digital ocean vps and creating users based on project for example
<code>project_name -> project1 thenusername will be project1 and directory of user will be home/project1/public</code><code>project_name -> project1 then username will be project1 and directory of user will be home/project1/public </code>project_name -> project1 then username will be project1 and directory of user will be home/project1/public
<code>
- For URL I want to achieve like
</code>
<code>
- For URL I want to achieve like
</code>
- For URL I want to achieve like
https://example.com/php/{project1}/{any} -> home/{project1}/public [laravel project]
https://example.com/js/{project1}/{any} -> localhost:{port}
<code>- Here is the configuration created so far.
</code>
<code>- Here is the configuration created so far.
</code>
- Here is the configuration created so far.
server {
listen 80;
server_name random.ab;
<code># Serve static files from /home/{project}/public
location ~ ^/php/(?<project>[^/]+)(/.*)?$ {
alias /home/$project/public$2;
index index.php index.html;
# Handle PHP files
location ~ .php$ {
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_hide_header X-Powered-By;
}
try_files $uri $uri/ /index.php?$query_string;
}
# Proxy requests to localhost:{port} for /js/{project}
location ~ ^/js/(?<project>[^/]+)(/.*)?$ {
set $port "";
# Define mapping of project names to ports
if ($project = project1) { set $port 1234; }
if ($project = project2) { set $port 5678; }
# Add more project-to-port mappings as needed
proxy_pass http://localhost:$port;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# Security: Deny access to hidden files
location ~ /.(?!well-known).* {
deny all;
}
</code>
<code># Serve static files from /home/{project}/public
location ~ ^/php/(?<project>[^/]+)(/.*)?$ {
alias /home/$project/public$2;
index index.php index.html;
# Handle PHP files
location ~ .php$ {
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_hide_header X-Powered-By;
}
try_files $uri $uri/ /index.php?$query_string;
}
# Proxy requests to localhost:{port} for /js/{project}
location ~ ^/js/(?<project>[^/]+)(/.*)?$ {
set $port "";
# Define mapping of project names to ports
if ($project = project1) { set $port 1234; }
if ($project = project2) { set $port 5678; }
# Add more project-to-port mappings as needed
proxy_pass http://localhost:$port;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# Security: Deny access to hidden files
location ~ /.(?!well-known).* {
deny all;
}
</code>
# Serve static files from /home/{project}/public
location ~ ^/php/(?<project>[^/]+)(/.*)?$ {
alias /home/$project/public$2;
index index.php index.html;
# Handle PHP files
location ~ .php$ {
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_hide_header X-Powered-By;
}
try_files $uri $uri/ /index.php?$query_string;
}
# Proxy requests to localhost:{port} for /js/{project}
location ~ ^/js/(?<project>[^/]+)(/.*)?$ {
set $port "";
# Define mapping of project names to ports
if ($project = project1) { set $port 1234; }
if ($project = project2) { set $port 5678; }
# Add more project-to-port mappings as needed
proxy_pass http://localhost:$port;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# Security: Deny access to hidden files
location ~ /.(?!well-known).* {
deny all;
}
}
<code>
- problem. it is not working at all for a patern.
- I already searched on web, chatGPT(I have Premium Sub :/), and nginx documents.
- can somebody help plz
</code>
<code>
- problem. it is not working at all for a patern.
- I already searched on web, chatGPT(I have Premium Sub :/), and nginx documents.
- can somebody help plz
</code>
- problem. it is not working at all for a patern.
- I already searched on web, chatGPT(I have Premium Sub :/), and nginx documents.
- can somebody help plz