Witam ponownie.
Znowu dostałem zadanie które mnie przerasta, bo z serwerami www itp. nigdy nie miałem do czynienia.
Wygląda to tak: na serwerze jest kilka aplikacja javowych, działa to na Glassfishu. Za serwer robi nginx. Zadanie wygląda tak: mam zrobić tak, żeby do jednej z tych aplikacji był dodatkowy dostęp przez www, ale żeby w tym wypadku wczytywane były inne css'y i pliki graficzne, które będą w innym katalogu/katalogach (do których te rzeczy będą wrzucać front-end developerzy w celu testowania).
Od której strony za to się zabrać, jakie informacje jeszcze podać?
[nginx] Konfiguracja virtual host
Zazwyczaj w aplikacjach webowych, wszystkie css'y, grafiki itp. są w wydzielonym katalogu od reszty (np. skryptów php). Przykładowo:
/moja_aplikacja/images/
/moja_aplikacja/css/
/moja_aplikacja/core_app/
W nginxie robisz dodatkowego VHosta który wskazuje na katalog /mojaplikacja i jest identycznie skonfigurowany jak ten już działający (no może poza domeną i/lub portem
, ale dla katalogów z css'ami i grafikami robisz alias który będzie wskazywał na inny katalog, do którego web deweloperzy będą mogli wrzucać pliki.
http://wiki.nginx.org/HttpCoreModule#alias
/moja_aplikacja/images/
/moja_aplikacja/css/
/moja_aplikacja/core_app/
W nginxie robisz dodatkowego VHosta który wskazuje na katalog /mojaplikacja i jest identycznie skonfigurowany jak ten już działający (no może poza domeną i/lub portem

http://wiki.nginx.org/HttpCoreModule#alias
No ok. Znalazłem potrzebne katalogi (css i images), skopiowałem w miejsce gdzie upoważnione osoby będą mogły je modyfikować. Problem ma tylko z tym wirtualnym hostem.
Teraz /etc/nginx/conf.d/default.conf wygląda tak:
No i w ten sposób wszystko ładnie działa. Teraz chcę zrobić tak jak mówisz (chodzi mi o app1), czyli dodaje:
oraz
Ale przy /etc/init.d/nginx configtest wywala:
Tak, ja wiem że to jest zduplikowane, ale ma być. Na razie chciałbym żeby po wpisaniu adresu app1_test wyświetlało mi się dokładnie to samo co po wpisaniu app1, a podmianą css'ów i reszty zajmę się jak już to ruszy, tylko najpierw niech to ruszy.
Teraz /etc/nginx/conf.d/default.conf wygląda tak:
Kod: Zaznacz cały
upstream app1{
ip_hash;
server 10.88.56.223:6113;
server 10.88.56.223:6114;
}
upstream app2 {
ip_hash;
server 10.88.56.223:6111;
server 10.88.56.223:6112;
}
server {
client_max_body_size 50M;
listen 80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/log/host.access.log main;
location / {
root /usr/share/nginx/html;
index 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 /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
location /app1 {
proxy_pass http://app1;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_connect_timeout 240;
proxy_read_timeout 240;
proxy_send_timeout 240;
}
location /app2 {
proxy_pass http://app2;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
location /app3 {
proxy_pass http://10.88.56.223:30090/app3;
}
location /app4 {
proxy_pass http://10.88.56.223:9081/app4;
}
# 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;
#}
}
Kod: Zaznacz cały
upstream app1_test {
ip_hash;
server 10.88.56.233:6113;
}
Kod: Zaznacz cały
location /load {
proxy_pass http://app1_test;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_connect_timeout 240;
proxy_read_timeout 240;
proxy_send_timeout 240;
}
Kod: Zaznacz cały
nginx: [emerg] duplicate location "/app1" in /etc/nginx/conf.d/default.conf:55
nginx: configuration file /etc/nginx/nginx.conf test failed
Ale po co te upstream'y ruszasz? Ja napisałem, żebyś dodał location dla kilku katalogów. Backendy zostaw w spokoju (oba VHosty mogą korzystać z tych samych). Na moje oko (ale oczywiście trzeba przetestować), to wystarczy skopiować całą sekcję server, zmienić tylko listen/server_name i dodać dwa aliasy dla katalogów css i images.
Jak pisałem w pierwszym poście - nie mam o tym zielonego pojęcia.
Wiem że moje pytania są dla Was śmieszne i głupie, ale po prostu zielony jestem.
Tego nie rozumiem.Ja napisałem, żebyś dodał location dla kilku katalogów
No ok. listen powiedzmy że na 81, ale server_name? Localhost to dla mnie localhost. Mogę to dowolnie sobie zmienić?to wystarczy skopiować całą sekcję server, zmienić tylko listen/server_name
Wiem że moje pytania są dla Was śmieszne i głupie, ale po prostu zielony jestem.