скажем у меня есть два доменных именни: one.com и two.com.
Также есть проект, на PHP, который хостится на сервере(NGINX) и доступен по следующим сылкам. http://my.server.com/**one*/ и http://my.server.com/**two*/.
Как мне сделать так, чтобы когда клиент в браузере задавал one.com, у него показывался контент из http://my.server.com/one/, а когда two.com, то показывался контент из http://my.server.com/two/ при этом в адрессе браузера продолжалось показываться one.com или two.com соответсвенно?
как такое сделать с помощью nginx?
Заранее спасибо.
#user nobody;
worker_processes auto;
worker_rlimit_nofile 2048;
error_log /var/log/nginx/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 2048;
}
http {
server_tokens off;
include mime.types;
default_type application/octet-stream;
log_format main '$http_x_forwarded_for - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
# Websocket support
#upstream websocket {
# server 127.0.0.1:<PORT>;
#}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
include /etc/nginx/aliases.conf;
#location /ws {
# proxy_pass http://websocket;
# proxy_http_version 1.1;
# proxy_set_header Upgrade $http_upgrade;
# proxy_set_header Connection "Upgrade";
#}
location / {
root /var/www/webroot/ROOT;
index index.html index.htm index.php;
location ~ \.php$ {
location ~ /\. { deny all; access_log off; log_not_found off; }
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
fastcgi_param PATH_INFO $fastcgi_script_name;
}
}
index index.php index.html index.htm;
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
location ~ /\. { deny all; access_log off; log_not_found off; }
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
location ~ \.php$ {
location ~ /\. { deny all; access_log off; log_not_found off; }
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME /var/www/webroot$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT /var/www/webroot;
}
}
include /etc/nginx/conf.d/*.conf;
}
во-первых, dns-имена one.com
и two.com
должны резолвиться в ip-адрес вашего сервера.
во-вторых, вам надо добавить две секции server {...}
в конфигурацию nginx.
допустим, сейчас у вас есть примерно такая секция (показана только существенная информация):
server {
server_name my.server.com;
...
root /путь/к/каталогу;
...
}
это в случае, если код сайтов находится в каталогах /путь/к/каталогу/one
и /путь/к/каталогу/two
.
вам надо дважды скопировать эту секцию и исправить директивы server_name
и root
, чтобы получить примерно следующее:
server {
server_name my.server.com;
...
root /путь/к/каталогу;
...
}
server {
server_name one.com;
...
root /путь/к/каталогу/one;
...
}
server {
server_name two.com;
...
root /путь/к/каталогу/two;
...
}
обновление: директива root
может находиться и внутри секции location / {...}
, как в вашем вопросе. это не меняет сути — копируйте секцию server {...}
«как есть», не меняя расположение директивы root
(т.е., оставив её внутри секции location / {...}
), но обязательно допишите /one
и /two
в конце директив root
, как в примере выше.
если же каталоги one
и two
находятся в совсем разных местах, то, вероятно, секция выглядит примерно так:
server {
server_name my.server.com;
...
location /one {
root /один/путь;
...
}
location /two {
root /другой/путь;
...
}
...
}
тогда вам надо опять-таки сделать две копии секции server
, удалив ненужные секции location {...}
:
server {
server_name my.server.com;
...
}
server {
server_name one.com;
...
location /one {
root /один/путь;
...
}
...
}
server {
server_name two.com;
...
location /two {
root /другой/путь;
...
}
...
}
и затем исправив /one
и /two
на /
, а к директивам root
добавить эти пути:
server {
server_name my.server.com;
...
}
server {
server_name one.com;
...
location / {
root /один/путь/one;
...
}
...
}
server {
server_name two.com;
...
location / {
root /другой/путь/two;
...
}
...
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Подскажите нужно сделать имя файла уникальным с помощью microtime и делая
Нужно к этому коду адаптировать pagination переключение с помощью ajax, вот пример и код:
Создал шаблон статической страницыПроверяю - PHP скрипты в ней отрабатывают
Имеется скрипт написанный на PHP 56 Имеется примонтированный к серверу на базе Debian 8 дополнительный диск, на котором лежат фотографии и xml файлы