mirror of
https://github.com/NginxProxyManager/nginx-proxy-manager.git
synced 2025-08-03 07:53:39 +00:00
@@ -5,14 +5,13 @@ COPY global /app/global
|
|||||||
COPY frontend/dist /app/frontend
|
COPY frontend/dist /app/frontend
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
RUN echo https://dl-cdn.alpinelinux.org/alpine/edge/testing | tee -a /etc/apk/repositories && \
|
RUN apk upgrade --no-cache && \
|
||||||
apk upgrade --no-cache && \
|
|
||||||
apk add --no-cache ca-certificates wget tzdata bash coreutils \
|
apk add --no-cache ca-certificates wget tzdata bash coreutils \
|
||||||
python3 \
|
python3 \
|
||||||
nodejs-current npm \
|
nodejs-current npm \
|
||||||
openssl apache2-utils jq fcgi \
|
openssl apache2-utils jq fcgi \
|
||||||
gcc g++ libffi-dev python3-dev \
|
gcc g++ libffi-dev python3-dev \
|
||||||
php7 php7-fpm php8 php8-fpm php81 php81-fpm php82 php82-fpm && \
|
php81 php81-fpm php82 php82-fpm && \
|
||||||
|
|
||||||
# Install cross-env
|
# Install cross-env
|
||||||
npm install --global cross-env && \
|
npm install --global cross-env && \
|
||||||
|
10
README.md
10
README.md
@@ -53,7 +53,7 @@ so that the barrier for entry here is low.
|
|||||||
- Easy security headers, see [here](https://github.com/GetPageSpeed/ngx_security_headers), enabled by default if you enable hsts
|
- Easy security headers, see [here](https://github.com/GetPageSpeed/ngx_security_headers), enabled by default if you enable hsts
|
||||||
- Access Log disabled
|
- Access Log disabled
|
||||||
- Error Log written to console
|
- Error Log written to console
|
||||||
- PHP included, you can add php extensions, see aviable packages here: https://pkgs.alpinelinux.org/packages?branch=edge&name=php*&arch=x86_64
|
- PHP included, you can add php extensions, see aviable packages [here](https://pkgs.alpinelinux.org/packages?branch=edge&repo=community&arch=x86_64&name=php8*-*)
|
||||||
- allows different acme servers
|
- allows different acme servers
|
||||||
- up to 64 domains per cert allowed
|
- up to 64 domains per cert allowed
|
||||||
|
|
||||||
@@ -77,8 +77,8 @@ alias /var/www/<your-html-site-folder-name>/;
|
|||||||
```
|
```
|
||||||
b) Custom Nginx Configuration (advanced tab), which looks the following for file server and **php**:
|
b) Custom Nginx Configuration (advanced tab), which looks the following for file server and **php**:
|
||||||
- Note: the slash at the end of the file path is important
|
- Note: the slash at the end of the file path is important
|
||||||
- Note: you can replace `fastcgi_pass php82;` with `fastcgi_pass` `php7`/`php8`/`php81`/`php82` `;`
|
- Note: you can replace `fastcgi_pass php82;` with `fastcgi_pass` `php81`/`php82` `;`
|
||||||
- Note: to add more php extension use the packes from [here](https://pkgs.alpinelinux.org/packages?branch=edge&name=php\*&arch=x86_64) and add them using the `PHP_APKS` env (see compose file)
|
- Note: to add more php extension use the packes from [here](https://pkgs.alpinelinux.org/packages?branch=edge&repo=community&arch=x86_64&name=php8*-*) and add them using the `PHP_APKS` env (see compose file)
|
||||||
```
|
```
|
||||||
location / {
|
location / {
|
||||||
alias /var/www/<your-php-site-folder-name>/;
|
alias /var/www/<your-php-site-folder-name>/;
|
||||||
@@ -94,7 +94,7 @@ if (!-f $document_root$fastcgi_script_name) {return 404;}
|
|||||||
1. Open this file: `nano` `/opt/npm/ssl/certbot/config.ini`
|
1. Open this file: `nano` `/opt/npm/ssl/certbot/config.ini`
|
||||||
2. uncomment the server line and change it to your acme server
|
2. uncomment the server line and change it to your acme server
|
||||||
3. maybe set eab keys
|
3. maybe set eab keys
|
||||||
4. create your cert
|
4. create your cert using the npm web ui
|
||||||
|
|
||||||
# Quick Setup
|
# Quick Setup
|
||||||
|
|
||||||
@@ -121,7 +121,7 @@ services:
|
|||||||
- "TZ=Europe/Berlin"
|
- "TZ=Europe/Berlin"
|
||||||
# - "NGINX_LOG_NOT_FOUND=true" # Allow logging of 404 errors
|
# - "NGINX_LOG_NOT_FOUND=true" # Allow logging of 404 errors
|
||||||
# - "NPM_LISTEN_LOCALHOST=true" # Bind the NPM Dashboard on Port 81 only to localhost
|
# - "NPM_LISTEN_LOCALHOST=true" # Bind the NPM Dashboard on Port 81 only to localhost
|
||||||
# - "PHP_APKS=php7-curl php8-curl php81-curl php-82-curl" # Add php extensions, see aviable packages here: https://pkgs.alpinelinux.org/packages?branch=edge&name=php\*&arch=x86_64
|
# - "PHP_APKS=php81-curl php-82-curl" # Add php extensions, see aviable packages here: https://pkgs.alpinelinux.org/packages?branch=edge&repo=community&arch=x86_64&name=php8*-*
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Bring up your stack by running (or deploy your portainer stack)
|
3. Bring up your stack by running (or deploy your portainer stack)
|
||||||
|
@@ -13,4 +13,4 @@ services:
|
|||||||
- "TZ=Europe/Berlin"
|
- "TZ=Europe/Berlin"
|
||||||
# - "NGINX_LOG_NOT_FOUND=true" # Allow logging of 404 errors
|
# - "NGINX_LOG_NOT_FOUND=true" # Allow logging of 404 errors
|
||||||
# - "NPM_LISTEN_LOCALHOST=true" # Bind the NPM Dashboard on Port 81 only to localhost
|
# - "NPM_LISTEN_LOCALHOST=true" # Bind the NPM Dashboard on Port 81 only to localhost
|
||||||
# - "PHP_APKS=php7-curl php8-curl php81-curl php-82-curl" # Add php extensions, see aviable packages here: https://pkgs.alpinelinux.org/packages?branch=edge&name=php\*&arch=x86_64
|
# - "PHP_APKS=php81-curl php-82-curl" # Add php extensions, see aviable packages here: https://pkgs.alpinelinux.org/packages?branch=edge&repo=community&arch=x86_64&name=php8*-*
|
@@ -4,7 +4,7 @@
|
|||||||
"description": "A beautiful interface for creating Nginx endpoints",
|
"description": "A beautiful interface for creating Nginx endpoints",
|
||||||
"main": "js/index.js",
|
"main": "js/index.js",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "7.20.7",
|
"@babel/core": "7.20.12",
|
||||||
"babel-core": "6.26.3",
|
"babel-core": "6.26.3",
|
||||||
"babel-loader": "8.3.0",
|
"babel-loader": "8.3.0",
|
||||||
"babel-preset-env": "1.7.0",
|
"babel-preset-env": "1.7.0",
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
if (cgi-fcgi -bind -connect /dev/php7.sock &> /dev/null && cgi-fcgi -bind -connect /dev/php8.sock &> /dev/null && cgi-fcgi -bind -connect /dev/php81.sock &> /dev/null && cgi-fcgi -bind -connect /dev/php82.sock &> /dev/null && [ "$(wget -q --no-check-certificate https://127.0.0.1:81/api -O - | jq --raw-output '.status')" == "OK" ]); then
|
if (cgi-fcgi -bind -connect /dev/php81.sock &> /dev/null && cgi-fcgi -bind -connect /dev/php82.sock &> /dev/null && [ "$(wget -q --no-check-certificate https://127.0.0.1:81/api -O - | jq --raw-output '.status')" == "OK" ]); then
|
||||||
echo "OK"
|
echo "OK"
|
||||||
exit 0
|
exit 0
|
||||||
else
|
else
|
||||||
|
@@ -4,8 +4,8 @@
|
|||||||
if [ -n "$PHP_APKS" ]; then
|
if [ -n "$PHP_APKS" ]; then
|
||||||
if ! echo "$PHP_APKS" | grep -q "^[a-z0-9 _-]\+$"; then
|
if ! echo "$PHP_APKS" | grep -q "^[a-z0-9 _-]\+$"; then
|
||||||
echo "You've set PHP_APKS but not to an allowed value.
|
echo "You've set PHP_APKS but not to an allowed value.
|
||||||
It needs to be a string. Allowed are small letters a-z, digits 0-9, spaces, hyphens and underscores.
|
It needs to be a string. Allowed are small letters a-z, digits 0-9, spaces, hyphens and underscores.
|
||||||
It is set to '$PHP_APKS'." || sleep inf
|
It is set to "$PHP_APKS"." || sleep inf
|
||||||
sleep inf || exit 1
|
sleep inf || exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -13,32 +13,32 @@ if [ -n "$PHP_APKS" ]; then
|
|||||||
read -ra APKS_ARRAY <<< "$PHP_APKS" || sleep inf
|
read -ra APKS_ARRAY <<< "$PHP_APKS" || sleep inf
|
||||||
for apk in "${APKS_ARRAY[@]}"; do
|
for apk in "${APKS_ARRAY[@]}"; do
|
||||||
|
|
||||||
if ! echo "$apk" | grep -q "php*"; then
|
if ! echo "$apk" | grep -Eq "php81-.*|php82-.*"; then
|
||||||
echo "'$apk' is a non allowed value.
|
echo ""$apk" is a non allowed value.
|
||||||
It needs to start with php.
|
It needs to start with \"php81-\" or \"php82-\".
|
||||||
It is set to '$apk'." || sleep inf
|
It is set to "$apk"." || sleep inf
|
||||||
sleep inf || exit 1
|
sleep inf || exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Installing $apk via apk..."
|
echo "Installing "$apk" via apk..."
|
||||||
if ! apk add --no-cache "$apk" &> /dev/null; then
|
if ! apk add --no-cache "$apk" &> /dev/null; then
|
||||||
echo "The packet $apk was not installed!" || sleep inf
|
echo "The packet "$apk" was not installed!" || sleep inf
|
||||||
fi
|
fi
|
||||||
|
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
mkdir -vp /data/tls/certbot/renewal \
|
mkdir -vp /data/tls/certbot/renewal \
|
||||||
/data/tls/custom \
|
/data/tls/custom \
|
||||||
/data/php \
|
/data/php \
|
||||||
/data/nginx/redirection_host \
|
/data/nginx/redirection_host \
|
||||||
/data/nginx/proxy_host \
|
/data/nginx/proxy_host \
|
||||||
/data/nginx/dead_host \
|
/data/nginx/dead_host \
|
||||||
/data/nginx/stream \
|
/data/nginx/stream \
|
||||||
/data/nginx/custom \
|
/data/nginx/custom \
|
||||||
/data/nginx/access \
|
/data/nginx/access \
|
||||||
/data/nginx/html \
|
/data/nginx/html \
|
||||||
/tmp/acme-challenge || sleep inf
|
/tmp/acme-challenge || sleep inf
|
||||||
|
|
||||||
if [ -f /data/nginx/default_host/site.conf ]; then
|
if [ -f /data/nginx/default_host/site.conf ]; then
|
||||||
mv -vn /data/nginx/default_host/site.conf /data/nginx/default.conf || sleep inf
|
mv -vn /data/nginx/default_host/site.conf /data/nginx/default.conf || sleep inf
|
||||||
@@ -77,19 +77,21 @@ mv -v /data/ssl/* /data/tls || sleep inf
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
rm -vrf /data/letsencrypt-acme-challenge \
|
rm -vrf /data/letsencrypt-acme-challenge \
|
||||||
/data/nginx/default_host \
|
/data/nginx/default_host \
|
||||||
/data/nginx/default_www \
|
/data/nginx/default_www \
|
||||||
/data/nginx/streams \
|
/data/nginx/streams \
|
||||||
/data/nginx/temp \
|
/data/nginx/temp \
|
||||||
/data/index.html \
|
/data/index.html \
|
||||||
/data/letsencrypt \
|
/data/letsencrypt \
|
||||||
/data/custom_ssl \
|
/data/custom_ssl \
|
||||||
/data/certbot \
|
/data/certbot \
|
||||||
/data/access \
|
/data/access \
|
||||||
/data/ssl \
|
/data/php/8 \
|
||||||
/data/logs \
|
/data/php/7 \
|
||||||
/data/error.log \
|
/data/ssl \
|
||||||
/data/nginx/error.log || sleep inf
|
/data/logs \
|
||||||
|
/data/error.log \
|
||||||
|
/data/nginx/error.log || sleep inf
|
||||||
|
|
||||||
find /data/nginx -type f -name '*.conf' -exec sed -i "s|/data/access|/data/nginx/access|g" {} \; || sleep inf
|
find /data/nginx -type f -name '*.conf' -exec sed -i "s|/data/access|/data/nginx/access|g" {} \; || sleep inf
|
||||||
|
|
||||||
@@ -141,11 +143,11 @@ touch /data/nginx/default.conf \
|
|||||||
/data/nginx/custom/server_stream_udp.conf \
|
/data/nginx/custom/server_stream_udp.conf \
|
||||||
/usr/local/nginx/conf/conf.d/include/ip_ranges.conf || sleep inf
|
/usr/local/nginx/conf/conf.d/include/ip_ranges.conf || sleep inf
|
||||||
|
|
||||||
for phpv in $(ls -1 /etc | grep php | sed "s|php||g"); do cp -vrnT /etc/php$phpv /data/php/$phpv; done;
|
for phpv in $(ls -1 /etc | grep php | sed "s|php||g"); do cp -vrnT /etc/php"$phpv" /data/php/"$phpv"; done;
|
||||||
for phpv in $(ls -1 /etc | grep php | sed "s|php||g"); do sed -i "s|user =.*|user = root|" /data/php/$phpv/php-fpm.d/www.conf; done;
|
for phpv in $(ls -1 /etc | grep php | sed "s|php||g"); do sed -i "s|user =.*|user = root|" /data/php/"$phpv"/php-fpm.d/www.conf; done;
|
||||||
for phpv in $(ls -1 /etc | grep php | sed "s|php||g"); do sed -i "s|group =.*|group = root|" /data/php/$phpv/php-fpm.d/www.conf; done;
|
for phpv in $(ls -1 /etc | grep php | sed "s|php||g"); do sed -i "s|group =.*|group = root|" /data/php/"$phpv"/php-fpm.d/www.conf; done;
|
||||||
for phpv in $(ls -1 /etc | grep php | sed "s|php||g"); do sed -i "s|listen =.*|listen = /dev/php$phpv.sock|" /data/php/$phpv/php-fpm.d/www.conf; done;
|
for phpv in $(ls -1 /etc | grep php | sed "s|php||g"); do sed -i "s|listen =.*|listen = /dev/php"$phpv".sock|" /data/php/"$phpv"/php-fpm.d/www.conf; done;
|
||||||
for phpv in $(ls -1 /etc | grep php | sed "s|php||g"); do sed -i "s|include=.*|include=/data/php/$phpv/php-fpm.d/*.conf|g" /data/php/$phpv/php-fpm.conf; done;
|
for phpv in $(ls -1 /etc | grep php | sed "s|php||g"); do sed -i "s|include=.*|include=/data/php/"$phpv"/php-fpm.d/*.conf|g" /data/php/"$phpv"/php-fpm.conf; done;
|
||||||
|
|
||||||
if [ "$NPM_LISTEN_LOCALHOST" == "true" ]; then
|
if [ "$NPM_LISTEN_LOCALHOST" == "true" ]; then
|
||||||
sed -i "s/listen 81/listen 127.0.0.1:81/g" /usr/local/nginx/conf/conf.d/npm.conf || sleep inf
|
sed -i "s/listen 81/listen 127.0.0.1:81/g" /usr/local/nginx/conf/conf.d/npm.conf || sleep inf
|
||||||
@@ -161,16 +163,6 @@ nginx -T || sleep inf
|
|||||||
sleep inf || exit 1
|
sleep inf || exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! cross-env PHP_INI_SCAN_DIR=/data/php/7/conf.d php-fpm7 -c /data/php/7 -y /data/php/7/php-fpm.conf -FORt &> /dev/null; then
|
|
||||||
cross-env PHP_INI_SCAN_DIR=/data/php/7/conf.d php-fpm7 -c /data/php/7 -y /data/php/7/php-fpm.conf -FORt || sleep inf
|
|
||||||
sleep inf || exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! cross-env PHP_INI_SCAN_DIR=/data/php/8/conf.d php-fpm8 -c /data/php/8 -y /data/php/8/php-fpm.conf -FORt &> /dev/null; then
|
|
||||||
cross-env PHP_INI_SCAN_DIR=/data/php/8/conf.d php-fpm8 -c /data/php/8 -y /data/php/8/php-fpm.conf -FORt || sleep inf
|
|
||||||
sleep inf || exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! cross-env PHP_INI_SCAN_DIR=/data/php/81/conf.d php-fpm81 -c /data/php/81 -y /data/php/81/php-fpm.conf -FORt &> /dev/null; then
|
if ! cross-env PHP_INI_SCAN_DIR=/data/php/81/conf.d php-fpm81 -c /data/php/81 -y /data/php/81/php-fpm.conf -FORt &> /dev/null; then
|
||||||
cross-env PHP_INI_SCAN_DIR=/data/php/81/conf.d php-fpm81 -c /data/php/81 -y /data/php/81/php-fpm.conf -FORt || sleep inf
|
cross-env PHP_INI_SCAN_DIR=/data/php/81/conf.d php-fpm81 -c /data/php/81 -y /data/php/81/php-fpm.conf -FORt || sleep inf
|
||||||
sleep inf || exit 1
|
sleep inf || exit 1
|
||||||
@@ -181,10 +173,8 @@ cross-env PHP_INI_SCAN_DIR=/data/php/82/conf.d php-fpm82 -c /data/php/82 -y /dat
|
|||||||
sleep inf || exit 1
|
sleep inf || exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
while (nginx -t &> /dev/null && cross-env PHP_INI_SCAN_DIR=/data/php/7/conf.d php-fpm7 -c /data/php/7 -y /data/php/7/php-fpm.conf -FORt &> /dev/null && cross-env PHP_INI_SCAN_DIR=/data/php/8/conf.d php-fpm8 -c /data/php/8 -y /data/php/8/php-fpm.conf -FORt &> /dev/null && cross-env PHP_INI_SCAN_DIR=/data/php/81/conf.d php-fpm81 -c /data/php/81 -y /data/php/81/php-fpm.conf -FORt &> /dev/null && cross-env PHP_INI_SCAN_DIR=/data/php/82/conf.d php-fpm82 -c /data/php/82 -y /data/php/82/php-fpm.conf -FORt &> /dev/null); do
|
while (nginx -t &> /dev/null && cross-env PHP_INI_SCAN_DIR=/data/php/81/conf.d php-fpm81 -c /data/php/81 -y /data/php/81/php-fpm.conf -FORt &> /dev/null && cross-env PHP_INI_SCAN_DIR=/data/php/82/conf.d php-fpm82 -c /data/php/82 -y /data/php/82/php-fpm.conf -FORt &> /dev/null); do
|
||||||
nginx || exit 1 &
|
nginx || exit 1 &
|
||||||
cross-env PHP_INI_SCAN_DIR=/data/php/7/conf.d php-fpm7 -c /data/php/7 -y /data/php/7/php-fpm.conf -FOR || exit 1 &
|
|
||||||
cross-env PHP_INI_SCAN_DIR=/data/php/8/conf.d php-fpm8 -c /data/php/8 -y /data/php/8/php-fpm.conf -FOR || exit 1 &
|
|
||||||
cross-env PHP_INI_SCAN_DIR=/data/php/81/conf.d php-fpm81 -c /data/php/81 -y /data/php/81/php-fpm.conf -FOR || exit 1 &
|
cross-env PHP_INI_SCAN_DIR=/data/php/81/conf.d php-fpm81 -c /data/php/81 -y /data/php/81/php-fpm.conf -FOR || exit 1 &
|
||||||
cross-env PHP_INI_SCAN_DIR=/data/php/82/conf.d php-fpm82 -c /data/php/82 -y /data/php/82/php-fpm.conf -FOR || exit 1 &
|
cross-env PHP_INI_SCAN_DIR=/data/php/82/conf.d php-fpm82 -c /data/php/82 -y /data/php/82/php-fpm.conf -FOR || exit 1 &
|
||||||
node --abort_on_uncaught_exception --max_old_space_size=250 index.js || exit 1 &
|
node --abort_on_uncaught_exception --max_old_space_size=250 index.js || exit 1 &
|
||||||
@@ -195,18 +185,10 @@ if ! nginx -t &> /dev/null; then
|
|||||||
nginx -T || exit 1
|
nginx -T || exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! cross-env PHP_INI_SCAN_DIR=/data/php/7/conf.d php-fpm7 -c /data/php/7 -y /data/php/7/php-fpm.conf -FORt &> /dev/null; then
|
|
||||||
cross-env PHP_INI_SCAN_DIR=/data/php/7/conf.d php-fpm7 -c /data/php/7 -y /data/php/7/php-fpm.conf -FORt || exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! cross-env PHP_INI_SCAN_DIR=/data/php/8/conf.d php-fpm8 -c /data/php/8 -y /data/php/8/php-fpm.conf -FORt &> /dev/null; then
|
|
||||||
cross-env PHP_INI_SCAN_DIR=/data/php/8/conf.d php-fpm8 -c /data/php/8 -y /data/php/8/php-fpm.conf -FORt || exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! cross-env PHP_INI_SCAN_DIR=/data/php/81/conf.d php-fpm81 -c /data/php/81 -y /data/php/81/php-fpm.conf -FORt &> /dev/null; then
|
if ! cross-env PHP_INI_SCAN_DIR=/data/php/81/conf.d php-fpm81 -c /data/php/81 -y /data/php/81/php-fpm.conf -FORt &> /dev/null; then
|
||||||
cross-env PHP_INI_SCAN_DIR=/data/php/81/conf.d php-fpm81 -c /data/php/81 -y /data/php/81/php-fpm.conf -FORt || exit 1
|
cross-env PHP_INI_SCAN_DIR=/data/php/81/conf.d php-fpm81 -c /data/php/81 -y /data/php/81/php-fpm.conf -FORt || exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! cross-env PHP_INI_SCAN_DIR=/data/php/82/conf.d php-fpm82 -c /data/php/82 -y /data/php/82/php-fpm.conf -FORt &> /dev/null; then
|
if ! cross-env PHP_INI_SCAN_DIR=/data/php/82/conf.d php-fpm82 -c /data/php/82 -y /data/php/82/php-fpm.conf -FORt &> /dev/null; then
|
||||||
cross-env PHP_INI_SCAN_DIR=/data/php/82/conf.d php-fpm82 -c /data/php/82 -y /data/php/82/php-fpm.conf -FORt || exit 1
|
cross-env PHP_INI_SCAN_DIR=/data/php/82/conf.d php-fpm82 -c /data/php/82 -y /data/php/82/php-fpm.conf -FORt || exit 1
|
||||||
fi
|
fi
|
@@ -56,14 +56,6 @@ http {
|
|||||||
'' close;
|
'' close;
|
||||||
}
|
}
|
||||||
|
|
||||||
upstream php7 {
|
|
||||||
server unix:/dev/php7.sock;
|
|
||||||
}
|
|
||||||
|
|
||||||
upstream php8 {
|
|
||||||
server unix:/dev/php8.sock;
|
|
||||||
}
|
|
||||||
|
|
||||||
upstream php81 {
|
upstream php81 {
|
||||||
server unix:/dev/php81.sock;
|
server unix:/dev/php81.sock;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user