Как настроить доступ к Nexcloud через интернет?

Здравствуйте!
Есть компания с сайтом www.example.com который размещен на серверах хостинг провайдера. Внутри сети компании стоит сервер на котором крутятся базы 1с. Интернет провайдер поставил Zyxell Kinetik Lite и предоставляет доступ в глобальную сеть со статическим IP адресом. На роутере настроен проброс 80 порта на сервер с базами 1с. Сейчас пользователь набирает в браузере 123.123.123.123/baza1c1 или 123.123.123.123/baza1c2 и попадает в нужную базу. Работает все по http. Захотелось красоты и в хостинг панели сайта компании был добавлен поддомен 1c.example.com которому была присвоена А запись с IP адресом роутера компании. Сейчас пользователь набирает 1c.example.com/baza1c1 или 1c.example.com/baza1c2 и попадает в нужную базу.
Возникла необходимость заменить dropbox локальным решением, для чего по многочисленным мануалам был установлен Nextcloud для тестов на простеньком компьютере внутри сети компании. Внутри локальной сети все работает замечательно. А дальше не могу реализовать подключение к своему nextcloud серверу через Интернет. В хостинг панели был зарегистрирован еще один поддомен cloud.example.com. Хостеру был задан вопрос как настроить редирект с сайта cloud.example.com на наш роутер со статическим адресом 123.123.123.123:43334. Не знаю что именно хостер сделал, но редирект работает. На самом роутере был настроен проброс 43334 порта на внутренний ip адрес nextcloud сервера на порт 80. Сейчас при обращении по адресу cloud.example.com попадаю на приветственную страницу своего веб сервера, на котором работает nextcloud, но чтобы попасть в веб интерфейс нужно перейти по адресу cloud.example.com/nextcloud и браузер вместо открытия панели сервиса предлагает скачать файл index.php вот с таким содержанием:
Код
<?php
/**
 * @copyright Copyright (c) 2016, ownCloud, Inc.
 *
 * @author Georg Ehrke <oc.list@georgehrke.com>
 * @author Joas Schilling <coding@schilljs.com>
 * @author Jörn Friedrich Dreyer <jfd@butonic.de>
 * @author Lukas Reschke <lukas@statuscode.ch>
 * @author Morris Jobke <hey@morrisjobke.de>
 * @author Robin Appelman <robin@icewind.nl>
 * @author Sergio Bertolín <sbertolin@solidgear.es>
 * @author Thomas Müller <thomas.mueller@tmit.eu>
 * @author Vincent Petry <pvince81@owncloud.com>
 *
 * @license AGPL-3.0
 *
 * This code is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License, version 3,
 * as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License, version 3,
 * along with this program.  If not, see <http://www.gnu.org/licenses/>
 *
 */

require_once __DIR__ . '/lib/versioncheck.php';

try {

	require_once __DIR__ . '/lib/base.php';

	OC::handleRequest();

} catch(\OC\ServiceUnavailableException $ex) {
	\OC::$server->getLogger()->logException($ex, array('app' => 'index'));

	//show the user a detailed error page
	OC_Response::setStatus(OC_Response::STATUS_SERVICE_UNAVAILABLE);
	OC_Template::printExceptionErrorPage($ex);
} catch (\OC\HintException $ex) {
	OC_Response::setStatus(OC_Response::STATUS_SERVICE_UNAVAILABLE);
	try {
		OC_Template::printErrorPage($ex->getMessage(), $ex->getHint());
	} catch (Exception $ex2) {
		\OC::$server->getLogger()->logException($ex, array('app' => 'index'));
		\OC::$server->getLogger()->logException($ex2, array('app' => 'index'));

		//show the user a detailed error page
		OC_Response::setStatus(OC_Response::STATUS_INTERNAL_SERVER_ERROR);
		OC_Template::printExceptionErrorPage($ex);
	}
} catch (\OC\User\LoginException $ex) {
	OC_Response::setStatus(OC_Response::STATUS_FORBIDDEN);
	OC_Template::printErrorPage($ex->getMessage(), $ex->getMessage());
} catch (Exception $ex) {
	\OC::$server->getLogger()->logException($ex, array('app' => 'index'));

	//show the user a detailed error page
	OC_Response::setStatus(OC_Response::STATUS_INTERNAL_SERVER_ERROR);
	OC_Template::printExceptionErrorPage($ex);
} catch (Error $ex) {
	try {
		\OC::$server->getLogger()->logException($ex, array('app' => 'index'));
	} catch (Error $e) {

		$claimedProtocol = strtoupper($_SERVER['SERVER_PROTOCOL']);
		$validProtocols = [
			'HTTP/1.0',
			'HTTP/1.1',
			'HTTP/2',
		];
		$protocol = 'HTTP/1.1';
		if(in_array($claimedProtocol, $validProtocols, true)) {
			$protocol = $claimedProtocol;
		}
		header($protocol . ' 500 Internal Server Error');
		header('Content-Type: text/plain; charset=utf-8');
		print("Internal Server Error\n\n");
		print("The server encountered an internal error and was unable to complete your request.\n");
		print("Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report.\n");
		print("More details can be found in the webserver log.\n");

		throw $e;
	}
	OC_Response::setStatus(OC_Response::STATUS_INTERNAL_SERVER_ERROR);
	OC_Template::printExceptionErrorPage($ex);
}



Даже если я введу в адресную строку внешний ip своего роутера и укажу что подключаться нужно к порту 43334 (123.123.123.123:43334) я так же увижу приветственную страницу web сервера. переход по 123.123.123.123:43334/nextcloud так же предлагает скачать файл.

Если же я подключаюсь к nextcloud серверу из локальной сети по его локальному адресу 192.168.1.8/nextcloud у меня открывается web интерфейс сервиса и я спокойно могу работать.

Как настроить работу сервиса nextcloud по следующей схеме: пользователь идет по адресу cloud.example.com его переводить на адрес 123.123.123.123:43334 где его дальше переводит на 192.168.1.8/nextcloud?

Версия nextcloud 13, версия php 7.0, web сервер nginx
  • Вопрос задан
  • 7207 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы