LINUX.ORG.RU

Сообщения lex-romanow

 

404 Not Found - не отправлять ошибку в php-fpm

Всем привет. Текущий конфиг nginx:

server {
    listen 80;

    error_log /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;

    root /home/app;

    location / {
        fastcgi_pass php:9000;
        fastcgi_index index.php;

        include fastcgi_params;

        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

Структура файлов и папок такая - https://prnt.sc/12swbwx

Если обратиться к корню сайта или /index.php получим следующее (логично, так как этого файла не существует):

nginx_1 | 2021/05/11 11:57:47 [error] 31#31: *12 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 172.21.0.1, server: , request: "GET /index.php HTTP/1.1", upstream: "fastcgi://172.21.0.3:9000", host: "localhost:4443"

php_1 | 172.21.0.2 - 11/May/2021:11:57:47 +0000 "GET /index.php" 404

nginx_1 | 172.21.0.1 - - [11/May/2021:11:57:47 +0000] "GET /index.php HTTP/1.1" 404 27 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:88.0) Gecko/20100101 Firefox/88.0"

nginx_1 | 172.21.0.1 - - [11/May/2021:11:57:47 +0000] "GET /favicon.ico HTTP/1.1" 499 0 "http://localhost:4443/index.php" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:88.0) Gecko/20100101 Firefox/88.0"

php_1 | 172.21.0.2 - 11/May/2021:11:57:47 +0000 "GET /favicon.ico" 404

Если обратиться к существующему скрипту, получим такой лог:

php_1 | 172.21.0.2 - 11/May/2021:11:58:58 +0000 "GET /init.php" 200

nginx_1 | 172.21.0.1 - - [11/May/2021:11:59:00 +0000] "GET /init.php HTTP/1.1" 200 11 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:88.0) Gecko/20100101 Firefox/88.0"

php_1 | 172.21.0.2 - 11/May/2021:11:59:00 +0000 "GET /favicon.ico" 404

nginx_1 | 2021/05/11 11:59:00 [error] 31#31: *15 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 172.21.0.1, server: , request: "GET /favicon.ico HTTP/1.1", upstream: "fastcgi://172.21.0.3:9000", host: "localhost:4443", referrer: "http://localhost:4443/init.php"

nginx_1 | 172.21.0.1 - - [11/May/2021:11:59:00 +0000] "GET /favicon.ico HTTP/1.1" 404 27 "http://localhost:4443/init.php" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:88.0) Gecko/20100101 Firefox/88.0"

Пробовал и такой конфиг:

server {
    listen 80;

    error_log /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;

    root /home/app;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        fastcgi_pass php:9000;
        fastcgi_index index.php;

        include fastcgi_params;

        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

При обращении к корню сайта видим то что и хотелось:

nginx_1 | 172.21.0.1 - - [11/May/2021:12:03:55 +0000] "GET / HTTP/1.1" 404 154 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:88.0) Gecko/20100101 Firefox/88.0"

nginx_1 | 172.21.0.1 - - [11/May/2021:12:03:55 +0000] "GET /favicon.ico HTTP/1.1" 404 154 "http://localhost:4443/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:88.0) Gecko/20100101 Firefox/88.0"

Если к /index.php, то:

php_1 | 172.21.0.2 - 11/May/2021:12:04:55 +0000 "GET /index.php" 404

nginx_1 | 2021/05/11 12:04:55 [error] 31#31: *5 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 172.21.0.1, server: , request: "GET /index.php HTTP/1.1", upstream: "fastcgi://172.21.0.3:9000", host: "localhost:4443"

nginx_1 | 172.21.0.1 - - [11/May/2021:12:04:55 +0000] "GET /index.php HTTP/1.1" 404 27 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:88.0) Gecko/20100101 Firefox/88.0"

К существующему /init.php:

php_1 | 172.21.0.2 - 11/May/2021:12:05:27 +0000 "GET /init.php" 200

nginx_1 | 172.21.0.1 - - [11/May/2021:12:05:28 +0000] "GET /init.php HTTP/1.1" 200 11 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:88.0) Gecko/20100101 Firefox/88.0"

nginx_1 | 172.21.0.1 - - [11/May/2021:12:05:28 +0000] "GET /favicon.ico HTTP/1.1" 404 154 "http://localhost:4443/init.php" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:88.0) Gecko/20100101 Firefox/88.0"

 ,

lex-romanow
()

2 Alias на 2 Directory в одном *.conf

Всем привет. Пока в процессе гугления ответа, не совсем удачно. В общем есть ссылка https://www.site.com/test - открывается успешно. Есть еще одна ссылка https://www.site.com/test/sso - 404 ошибка. Почему?

По первой и второй ссылке расположены 2 разных проекта, которые от части могут пересекаться кодом. Расположены они в общем каталоге, но в своих подкаталогах.

Ниже мой .conf файл:

DocumentRoot /opt/bitnami/apps/test/

Alias /test "/opt/bitnami/apps/test/ws"
Alias /test/sso "/opt/bitnami/apps/test/sso/www"

<Directory /opt/bitnami/apps/test/ws>
    Options +FollowSymLinks
    AllowOverride All
    <IfVersion < 2.3>
        Order allow,deny
        Allow from all
    </IfVersion>
    <IfVersion >= 2.3>
        Require all granted
    </IfVersion>
</Directory>

<Directory /opt/bitnami/apps/test/sso/www>
    Options +FollowSymLinks
    AllowOverride All
    <IfVersion < 2.3>
        Order allow,deny
        Allow from all
    </IfVersion>
    <IfVersion >= 2.3>
        Require all granted
    </IfVersion>
</Directory>

 ,

lex-romanow
()

Выполнение php скриптов

Всем привет. Имею такой nginx конфиг:

upstream etherpad-lite {
    server 127.0.0.1:9001;
}

error_page 500 https://noname.com/controller?etherpad=500;
error_page 502 https://noname.com/controller?etherpad=502;
error_page 503 https://noname.com/controller?etherpad=503;
error_page 504 https://noname.com/controller?etherpad=504;

server {
    listen 443 ssl;
    
    server_name noname.xyz;
    
    access_log /var/log/virtualmin/noname.xyz_access_log;
    error_log /var/log/virtualmin/noname.xyz_error_log;
    
    ssl_certificate /home/noname/ssl.combined;
    ssl_certificate_key /home/noname/ssl.key;
    
    if ($host !~* "^noname\.xyz$") {
    	return 444;
    }
    
    if ($request_uri = "/") {
       return 444;
    }
    
    location /p/ {
    	rewrite ^/p/(.*) /$1 permanent;
    }
    
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
    
    location ~ ^/(locales/|locales.json|admin/|static/|pluginfw/|javascripts/|socket.io/|ep/|minified/|api/|ro/|error/|jserror/|favicon.ico|robots.txt) {
    	proxy_pass http://etherpad-lite;
    }
    
    location / {
        proxy_pass http://etherpad-lite/p/;
        proxy_redirect / /p/;
    }
}

map $http_upgrade $connection_upgrade {
    default upgrade;
    '' close;
}
С выше конфига имеем определенный сервис, который использует proxy_pass. Весь код расположен по пути /home/noname/public_html/. Создал php скрипт для определенных нужд, когда вызываю его по прямой ссылке, он у меня скачивается, что не есть верно. PHP установлен. Пробовал подкинуть следующий блок с другого сервера, где крутится php сайт:
location ~ \.php$ {
    try_files $uri =404;
    fastcgi_pass unix:/var/php-nginx/155629820914603.sock/socket;
}
Картина не изменилась. Что я мог упустить?

 , , ,

lex-romanow
()

Конфигурация юнита в systemd

Всем привет, использую такую конфигурацию взятую от сюда.

[Unit]
Description=Etherpad-lite, the collaborative editor.
After=syslog.target network.target

[Service]
Type=simple
User=etherpad
Group=etherpad
WorkingDirectory=/opt/etherpad
Environment=NODE_ENV=production
ExecStart=/usr/bin/nodejs /opt/etherpad/node_modules/ep_etherpad-lite/node/server.js
Restart=always # use mysql plus a complete settings.json to avoid Service hold-off time over, scheduling restart.

[Install]
WantedBy=multi-user.target

Вопрос - если в этом приложении, которое запускать буду как сервис, используется mysql, то вероятно что нужно сперва дождаться загрузки mysql юнита, а потом запускать свой, верно?

[Unit]
...
After=syslog.target network.target mysql.service
Requires=mysql.service

...

 , ,

lex-romanow
()

systemd или sysvinit для запуска приложения?

Всем привет. Нужно запустить как сервис это приложение. Есть примеры для systemd и sysvinit. Хочу спросить ваше мнение, какой вариант может быть лучше? Также заметил, что mysql на моем сервере использует оба варианта, пока не нашел для себя ответа зачем.

 , ,

lex-romanow
()

Как получить IP адрес клиента при proxy_pass на localhost в пределах одного сервера

Всем привет. Не могу понять как решить мне эту задачу при выше указаных условиях в названии темы.

Конфиг Nginx:

upstream etherpad-lite {
    server 127.0.0.1:9001;
}

server {
    listen 443 ssl;
    server_name spexfy.xyz;
    
    access_log /var/log/virtualmin/spexfy.xyz_access_log;
    error_log /var/log/virtualmin/spexfy.xyz_error_log;
    
    ssl_certificate /home/spexfy/ssl.combined;
    ssl_certificate_key /home/spexfy/ssl.key;
    
    if ($host !~* "^spexfy\.xyz$") {
    	return 444;
    }
    
    location / {
        proxy_pass http://etherpad-lite;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
    }
}

map $http_upgrade $connection_upgrade {
    default upgrade;
    '' close;
}

Знаю что для перердачи в блок location нужно добавить:

proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;

А для того чтобы словить в блоке server нужно указать:

set_real_ip_from IP_SERVERA_OT_KUDA_IDET_PROXY;
real_ip_header X-Real-IP;

Здесь как раз и не понятно, как быть если проксирование в пределах одного сервера.

На 127.0.0.1:9001 висит сервис, собственно куда и делаю проксирование.

 , ,

lex-romanow
()

Firefox can’t establish a connection to the server

Всем привет. Помогите пожалуйста донастроить Nginx, чтобы убрать эту ошибку.

Вывод в консоль

Вывод в сеть

Базовая конфигурация Nginx.conf

upstream etherpad-lite {
    server 127.0.0.1:9001;
}

server {
    listen 443 ssl;
    server_name spexfy.xyz;
    
    access_log /var/log/virtualmin/spexfy.xyz_access_log;
    error_log /var/log/virtualmin/spexfy.xyz_error_log;
    
    ssl_certificate /home/spexfy/ssl.combined;
    ssl_certificate_key /home/spexfy/ssl.key;
    
    if ($host !~* "^spexfy\.xyz$") {
    	return 444;
    }
    
    location / {
    	proxy_pass http://etherpad-lite;
    }
}

Запущен сервис etherpad на 127.0.0.1:9001, доступ к сервису возможен только по одному урл - список

Ошибка возникает когда я захожу в сам документ. Но что странно, сервис не крашится и визуально ничего не происходит. В логах сервиса никаких изменений не вижу.

Пробовал такую конфигурацию Nginx.conf, все по прежнему. Некоторые рекомендации брал у самих разработчиков

upstream etherpad-lite {
    server 127.0.0.1:9001;
}

server {
    listen 443 ssl;
    server_name spexfy.xyz;
    
    access_log /var/log/virtualmin/spexfy.xyz_access_log;
    error_log /var/log/virtualmin/spexfy.xyz_error_log;
    
    ssl_certificate /home/spexfy/ssl.combined;
    ssl_certificate_key /home/spexfy/ssl.key;
    
    if ($host !~* "^spexfy\.xyz$") {
    	return 444;
    }
    
    location / {
    	proxy_pass http://etherpad-lite;
        proxy_set_header  X-Real-IP  $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header  Host $host;
        proxy_redirect off;
        proxy_read_timeout 300;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
    }
}

map $http_upgrade $connection_upgrade {
    default upgrade;
    '' close;
}

 , , ,

lex-romanow
()

Не получается полностью исключить некоторые параметры из урл

Всем привет. Помогите пожалуйста подправить мой конфиг ngix:

server {
    listen 443 ssl;
    server_name spexfy.xyz;
  
    location / {
        proxy_pass http://127.0.0.1:9001/;
    }

    ssl_certificate /home/spexfy/ssl.combined;
    ssl_certificate_key /home/spexfy/ssl.key;
}

Результат

А должен быть доступ только по https://spexfy.xyz/. Проброс обязателен, так как хочу избавиться от порта в урл по которому работает сервис.

Спасибо!

 ,

lex-romanow
()

Ограничение области видимости юзеру

Всем привет. Установлена Ubuntu 16.04.6 LTS. Хочу реализовать следующее - создать пользователя и ограничить ему область видимости, чтобы через sftp или ssh он не мог выходить за пределы своего домашнего каталога, а также видеть другие папки за его пределами. Создать пользователя я то могу - adduser username, а вот как реализовать следующее? Также нужно скрыть от глаз пользователя .bash файлы находящиеся в его домашнем каталоге http://prntscr.com/moq217.

 ,

lex-romanow
()

RSS подписка на новые темы