nginx 도메인 이름 설정 후 2단계 디렉터리에서 다른 항목에 접근하는 설정 작업
2급 디렉터리(가상 디렉터리, 응용 프로그램)의 방식으로 같은 ip+ 포트의 다른 응용 프로그램에 접근한다. 예를 들어location은 사용자가 사용하는 페이지이고location/admin/는 관리 페이지이고location은 192.168.1.100의 80 포트에 배치되고location/admin은 172.20.1.32의 8080 포트에 배치된다.
솔루션:
nginx 역방향 프록시를 사용하여 다음과 같이 구성합니다.
server {
listen 80;
server_name demo.domain.com;
# service
location /service {
#DemoBackend1 , service 404
proxy_pass http://DemoBackend1/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
#
location / {
proxy_pass http://DemoBackend2;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
#
upstream DemoBackend1 {
server 192.168.1.1;
server 192.168.1.2;
ip_hash;
}
upstream DemoBackend2 {
server 192.168.2.1;
server 192.168.2.2;
ip_hash;
}
그러나 이런 방식으로 2급 디렉터리의 스타일 파일이 정상적으로 표시되지 않습니다. 그들은 자동으로 2급 디렉터리에서 찾지 않고 루트 디렉터리에서 찾습니다. 페이지를 돌릴 때도 404 오류를 보고합니다.설정이 잘못되었는지 서버 블록에 루트나 Rewrite를 설정해도 해결할 수 없습니다.프록시에서_pass 뒤에 2급 디렉터리를 추가하고 location 블록의 2급 디렉터리와 같이 다음과 같이 설정합니다.
server {
listen 80;
server_name demo.domain.com;
# service
location /service {
#DemoBackend1 , service 404
proxy_pass http://DemoBackend1/service;#DemoBackend1 service , location
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
#
location / {
proxy_pass http://DemoBackend2;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
#
upstream DemoBackend1 {
server 192.168.1.1;
server 192.168.1.2;
ip_hash;
}
upstream DemoBackend2 {
server 192.168.2.1;
server 192.168.2.2;
ip_hash;
}
문제 해결그리고 실제 응용에서 나는 asp를 사용했다.net의 mvc는 mvc를 사이트로 설정하는 방식에 문제가 없다. 가상 디렉터리 방식이면 경로를 찾을 수 없다. 왜냐하면 자신이 사이트에 있는 주소가 규범에 맞지 않기 때문이다. 정확한 방식은 다음과 같다.
Here's a typical example of what you should never do:
<script type="text/javascript">
$.ajax({
url: '/home/index'
});
</script>
and here's how this should be done:
<script type="text/javascript">
$.ajax({
url: '@Url.Action("index", "home")'
});
</script>
Here's another typical example of something that you should never do:
<a href="/home/index" rel="external nofollow" >Foo</a>
and here's how this should be written:
@Html.ActionLink("Foo", "Index", "Home")
Here's another example of something that you should never do:
<form action="/home/index" method="opst">
</form>
and here's how this should be written:
@using (Html.BeginForm("Index", "Home"))
{
}
보충 지식:nginx 서버를 사용하여 같은 IP와 같은 포트에서 서로 다른 프로젝트에 접근하고 도메인 이름으로 구분하여 접근하는 프로젝트를 실현여기에서 나는nginx 서버 두 대를 사용했는데, 한 서버는 서로 다른 항목을 서로 다른 포트에 연결하고, 한 서버는 서로 다른 도메인 이름을 서로 다른 포트의 프로젝트에 나누어 주었다.
첫 번째 nginx의 conf 파일 서버 부분:
server {
listen 8000;
server_name localhost;
root E:/test/pro1;
location / {
index index.html index.htm;
}
}
server {
listen 8001;
server_name localhost;
root E:/test/pro2;
location / {
index index.html index.htm;
}
}
두 번째 nginx의 conf 파일의 서버 부분:
server {
listen 80;
server_name www.testpro01.com testpro01.com;
location / {
proxy_pass http://127.0.0.1:8000;
}
}
server {
listen 80;
server_name www.testpro02.com testpro02.com;
location / {
proxy_pass http://127.0.0.1:8001/;
}
}
마지막으로bat 파일로 두 개의nginx 서버를 조작합니다시작 파일은 다음과 같습니다. start.bat
@echo off
echo [start...]
cd /d E:
cd spiovnet
ginx-1.16.1
call start nginx.exe
cd /d D:
cd nginx-1.16.1
call start nginx.exe
echo [end...]
@pause
다른 뇌동은 명령만 다르다nginx 시작 명령:start nginx.exe 또는nginx
nginx 다시 불러오기 설정 명령:nginx -s reload
ngin 재부팅 명령:nginx -s reopen
ngin 닫기 명령:nginx -s stop
이상의 이nginx가 도메인 이름을 설정한 후 2급 디렉터리가 서로 다른 프로젝트에 접근하는 설정 작업은 바로 편집자가 여러분에게 공유한 모든 내용입니다. 여러분께 참고가 되고 저희를 많이 사랑해 주시기 바랍니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
간단! Certbot을 사용하여 웹 사이트를 SSL(HTTPS)화하는 방법초보자가 인프라 주위를 정돈하는 것은 매우 어렵습니다. 이번은 사이트를 간단하게 SSL화(HTTP에서 HTTPS통신)로 변경하는 방법을 소개합니다! 이번에는 소프트웨어 시스템 Nginx CentOS7 의 환경에서 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.