Настройки nginx для авторизации только интерфейса WB

Добрый день.

Я создаю веб-интерфейсы панелей управления и размещаю их на контроллере под другими портами (8100, 8080, 8888 и т.д.), добавляя их как отдельные sites-enabled в настройках nginx. Обычно они запаролены, как и вебинтерфейс самого контроллера глобальной настройкой ln -s /etc/nginx/sites-available/global_auth /etc/nginx/sites-enabled.

На днях возникла задача, чтобы оставить авторизацию для интерфейса контроллера, но убрать для панелей. Я удалил /etc/nginx/sites-enabled/global_auth, и попытался добавить этот файл в директорию includes, как в комменте указано в default конфиге, но авторизация не включилась. Прошивка обновлена на позавчерашнюю.
На моем тестовом контроллере, он более старый, даже нет такой структуры папок, не могу поэкспериментировать.

Подскажите, как оптимальнее решить эту задачу?

Добрый день!

Если есть техническая возможность попробовать testing-ветку, то в последнем релизе ваша задача решается прямо «из коробки» без правки конфигов.

Александр, добрый день.

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

Как я понимаю, задача решается добавкой строчек
auth_basic “Wiren Board UI”;
auth_basic_user_file /etc/nginx/passwd;
в нужное место. Ранее, я бы добавил их просто в default, но в новой версии там предупреждение что ничего не пишите сюда, пишите в папку includes (пишу по памяти), так как при обновлении оно затрется. Я написал, но авторизация не включилась.

И еще один вопрос.
Где можно размещать файлы с вебинтерфейсом панели, чтобы они не затерлись при очередном обновлении? Я когда то находил статью с структурой разделов, что затирается, а что нет, а сейчас потерял.
Сейчас размещаю в папке /var/, рядом с www контроллера.

Добрый день!

Раздел /mnt/data/ не затирается. Также напомню, что при обновлении через apt разделы сохраняются.

Для установки пароля на веб-интерфейс контроллера используйте данную инструкцию.

Александр,

По этой инструкции я и ставлю пароль на веб-интерфейс. Проблема в том, что оказывается запаролен весь сервер, и если добавлять дополнительные сервер-блоки, то они тоже оказываются под паролем.

Мой вопрос был - куда нужно добавить строки с авторизацией
auth_basic “Wiren Board UI”;
auth_basic_user_file /etc/nginx/passwd;
, в какой конфиг, чтобы веб-интерфейс контроллера был под защитой, а вебинтерфейс другого блока оказался доступен без пароля и при этом, при будущем обновлении, эти строки не затерлись?

1 лайк

Все, решил.

Надо добавить строку “auth_basic “off”;” в конфиг своего серверблока, и тогда общий конфиг под паролем, а нужные интерфейсы открыты.

server {
	listen   8100; ## listen for ipv4; this line is default and implied
	#listen   [::]:80 default_server ipv6only=on; ## listen for ipv6

	root /var/my_custom_web_interface;
	auth_basic "off";
	# Make site accessible from http://localhost/
	server_name localhost;

	location / {
		index index.html;
		try_files $uri $uri/ /index.html;
		add_header Cache-Control "no-store, no-cache, must-revalidate";
	}

	location ~* \.(js|jpg|jpeg|gif|png|svg|css)$ {
		add_header Cache-Control "max-age=31536000";
	}

}

Добрый день! Замечательно, спасибо!
Аторизацию можно добравлять в server/location только основного интерфейса, блоки для ваших панелей – без авторизации.
Свои паели складывайте в /mnt/data/ - не перезатрется при обновлении.