Как настроить два сервера на одном доменном имени?

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

Я попытался установить порт 9090 для моего тестового сервера, но затем я получаю:

http://example.com:9090/

This webpage is not available

Есть идеи?

Вот мои блоки:

тестовый сервер:

server {
    listen 9090;
    server_name tree;
    root /home/forge/tree/public;

    # FORGE SSL (DO NOT REMOVE!)
    # ssl_certificate;
    # ssl_certificate_key;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

    index index.html index.htm index.php;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    access_log off;
    error_log  /var/log/nginx/tree-error.log error;

    error_page 404 /index.php;

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }
}

производственный сервер:

server {
    listen 80 default_server;
    server_name default;
    root /home/forge/default/public;

    # FORGE SSL (DO NOT REMOVE!)
    # ssl_certificate;
    # ssl_certificate_key;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

    index index.html index.htm index.php;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    access_log off;
    error_log  /var/log/nginx/default-error.log error;

    error_page 404 /index.php;

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }
}

ошибка:

2015/11/19 17:42:16 [error] 2878#0: *60 FastCGI sent in stderr: "PHP message: PHP Deprecated:  Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be removed in a future version. To avoid this warning set 'always_populate_raw_post_data' to '-1' in php.ini and use the php://input stream instead. in Unknown on line 0" while reading response header from upstream, client: 46.185.165.167, server: default, request: "POST /api/get-country-tree?country_id=-1&level=3 HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "kalimon.info", referrer: "http://kalimon.info/new_tree"

] edit

$ netstat -antp
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      18539/nginx: worker
tcp        0      0 0.0.0.0:9090            0.0.0.0:*               LISTEN      18539/nginx: worker

$ wget localhost:9090
--2015-11-22 11:26:57--  http://localhost:9090/
Resolving localhost (localhost)... 127.0.0.1
Connecting to localhost (localhost)|127.0.0.1|:9090... connected.
HTTP request sent, awaiting response... 403 Forbidden
2015-11-22 11:26:57 ERROR 403: Forbidden.

edit 2

Я исправил ошибку разрешения:

$ chmod -R 775 ~/tree

Теперь я получаю ответ ... 200:

$ wget 0.0.0.0:9090
--2015-11-22 12:17:47--  http://0.0.0.0:9090/
Connecting to 0.0.0.0:9090... connected.
HTTP request sent, awaiting response... 200 OK

, но в браузере я все еще получаю ошибку ERR_CONNECTION_REFUSED

edit 3

Хорошо, я приближаюсь к ответу:

$ nmap localhost

Starting Nmap 6.40 ( http://nmap.org ) at 2015-11-22 13:27 AST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00040s latency).
Not shown: 995 closed ports
PORT     STATE SERVICE
22/tcp     open  ssh
80/tcp     open  http
9090/tcp   open  zeus-admin
3306/tcp   open  mysql
5432/tcp   open  postgresql

Итак, порт 9090 не использует службу http, как порт 80, это проблема? как решить эту проблему?

Я попробовал порт 96, но его нет в списке при использовании nmap localhost, и я получил ERR_CONNECTION_TIMED_OUT

Итак, / web / admin Предположим, что домен моего веб-сайта http://www.domain.com/, и я хотел бы использовать порт 8080 для страницы администратора ....

Я создал два каталога для хранения веб-сайта на веб-сервер

/web
/web/admin

Предположим, что домен моего веб-сайта http://www.domain.com/ , и я хотел бы использовать порт 8080 для страницы администратора.

Как я могу ограничить URL http://www.domain.com:8080 указывает на / web / admin и http://www.domain.com:80 неподвижную точку на / web ?

Я знаю, что большинство веб-панелей управления делают это. Может ли кто-нибудь посоветовать мне, как это сделать?

Вот моя среда: Linux CentOS 7.0, Apache / 2.4. 6

-2
задан 19 November 2015 в 16:18
1 ответ

Если вы хотите сделать это вручную, отредактируйте файл nano /etc/apache2/sites-enabled/000-default.conf

и измените конфигурацию виртуального хоста:

<VirtualHost *:80>
# [ Server Domain ]
ServerName www.domain.com
# [ Server Root ]
DocumentRoot /web/
# [ Prevent direct access to admin]
Redirect 301 /admin/ http://www.domain.com:8080
</VirtualHost >

Listen 8080
<VirtualHost *:8080>
# [ Server Domain ]
ServerName www.domain.com
# [ Server Root ]
DocumentRoot /web/admin/
</VirtualHost >

By способ sites-enabled / 000-default.conf - это символическая ссылка на sites-available / 000-default.conf

. Вы должны установить свой веб-сайт и сайт администратора в двух отдельных папках. иметь два чистых виртуальных хоста без защиты прямого доступа с помощью перенаправления

. Вы можете установить порт прослушивания в /etc/apache2/ports.conf вместо конфигурации вашего веб-сайта, если хотите

1
ответ дан 5 December 2019 в 21:25

Теги

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