1.19 - 1.22 Nginx 의 location 설정, 정방 향, 역방향 에이전트
9532 단어 proxy_passlocationNginx 실전 과정 노트
제3자 모듈 echo - nginx - module 설치
git clone https://github.com/openresty/echo-nginx-module.git
./configure --prefix=/usr/local/nginx --add-module=/path/to/echo-nginx-module
echo 모듈 설치 작업:
cd /usr/local/src/nginx-1.8.0/
./configure --prefix=/usr/local/nginx --add-module=/usr/local/src/echo-nginx-module
make && make install
/etc/init.d/nginx restart
# nginx -V
nginx version: nginx/1.8.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC)
configure arguments: --prefix=/usr/local/nginx --add-module=/usr/local/src/echo-nginx-module
쓰기 설정:
server {
listen 80;
server_name 2.com;
root /data/t-nginx/2.com;
location /abc/
{
echo 123;
}
}
효과 접근 / abc / echo 정 보 를 출력 하려 면
curl -x127.0.0.1:80 2.com/abc/1111
123
위치 문법
location [=|^~|~|~*] /uri/ { …. }
https://coding.net/u/aminglinux/p/nginx/git/blob/master/location/ruler.md
location 우선 순위 및 사례
http://coding.net/u/aminglinux/p/nginx/git/blob/master/location/priority.md
장면 비교: / 와 ~ *
server {
listen 80;
server_name 2.com;
root /data/t-nginx/2.com;
location /abc/
{
echo "/";
}
location ~* abc
{
echo "~*";
}
}
효과:
curl -x127.0.0.1:80 2.com/abc/1111
~*
실험 에 의 하면 같은 장면 ~ * 비 / 의 우선 순위 가 높다 는 것 을 증명 합 니 다.
장면 비교: ~ 와 ~ *
이 두 개가 동시에 존재 하면 가장 먼저 나타 난 location 문법 과 일치 합 니 다.
장면 비교: = 와 ^ ~
vim 2.com.conf
server {
listen 80;
server_name 2.com;
root /data/t-nginx/2.com;
location ^~ abc
{
echo "^~";
}
location = "/abc/1.php"
{
echo "=";
}
}
# curl -x127.0.0.1:80 2.com/abc/1.php
=
실험 은 같은 장면 이 ^ ~ 보다 우선 순위 가 높다 는 것 을 증명 한다.
규칙 예시
location = "/12.jpg" { ... }
예:
www.aminglinux.com/12.jpg
www.aminglinux.com/abc/12.jpg
일치 하지 않 는 이유: "=" 은 정확 한 일치 이기 때 문 입 니 다.
location ^~ "/abc/" { ... }
예:
www.aminglinux.com/abc/123.html
www.aminglinux.com/a/abc/123.jpg
일치 하지 않 는 이유: "/ abc /" 로 시작 하여 일치 하기 때 문 입 니 다.
location ~ "png" { ... }
예:
www.aminglinux.com/aaa/bbb/ccc/123.png
www.aminglinux.com/aaa/png/123.html
모두 일치: ~ "png" 와 일치 하면 됩 니 다.
location ~* "png" { ... }
예:
www.aminglinux.com/aaa/bbb/ccc/123.PNG
www.aminglinux.com/aaa/png/123.html
모두 일치: 대소 문자 가 일치 하 는 지 구분 하지 않 기 때문에 "png" 가 있 으 면 일치 합 니 다.
location /admin/ { ... }
예:
www.aminglinux.com/admin/aaa/1.php
www.aminglinux.com/123/admin/1.php
일치 하지 않 는 이유: uri 후 / admin / 의 시작 이기 때문에 so 두 번 째 는 어 울 리 지 않 습 니 다.
1.20 nginx 정방 향 에이전트
설명도
https://coding.net/u/aminglinux/p/nginx/git/blob/master/proxy/pic.md
Nginx 정방 향 에이전트
https://coding.net/u/aminglinux/p/nginx/git/blob/master/proxy/z_proxy.md
정방 향 에이전트:
사용자 와 프 록 시 서버 는 같은 네트워크 환경 에서 프 록 시 서버 는 사용자 가 접근 할 수 없 는 웹 서버 에 접근 하도록 도와 줍 니 다.
Nginx 프 록 시 설정 파일
server {
listen 80 default_server;
resolver 119.29.29.29;
location /
{
proxy_pass http://$host$request_uri;
}
}
설명:
정방 향 프 록 시 설정 파일 은 default 를 설정 해 야 합 니 다.server;
resolver 119.29.29.29; dns 를 설명 합 니 다. 이 dns 는 모든 네트워크 웹 을 분석 할 수 있 습 니 다. 대륙 방화벽 에 의 해 차 단 된 것 을 제외 하고 (Facebook, Instagram...)
접근 테스트:
curl 외부 네트워크
curl - x 127.0.0.1: 80 외부 네트워크
1.21 Nginx 리 버스 에이전트
https://coding.net/u/aminglinux/p/nginx/git/blob/master/proxy/f_proxy.md
역방향 에이전트 설정:
조건:
1 에이전트 가 필요 한 servername
2 server_name 의 IP 또는 ip: port
80 에이전트 90 의 도 메 인 이름 설정 은 다음 과 같 습 니 다.
server
{
listen 80;
server_name www.test.com;
location /
{
proxy_pass http://127.0.0.1:90/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
90 프 록 시 가상 호스트 설정:
server
{
listen 90 default_server;
server_name www.test.com;
root /data/t-nginx/test.com/;
index index.html ;
}
mkdir -p /data/t-nginx/test.com
echo "test.com_90" > /data/t-nginx/test.com/index.html
접근 테스트:
# curl -x127.0.0.1:90 www.test.com
test.com_90
# curl 127.0.0.1:90
test.com_90
ip: port 에 접근 하 는 것 과 90 포트 에서 접근 하 는 것 은 모두 같 습 니 다.
장면: test. com 을 방문 하고 다음은 defaultserver, 다른 하 나 는 출력 결 과 를 구별 합 니 다.
[root@AliKvn vhost]# cat test.com.conf
server
{
listen 90 ;
server_name www.test.com;
root /data/t-nginx/test.com/;
index index.html ;
}
[root@AliKvn vhost]#test.com-90-default.conf
server
{
listen 90 default_server;
#server_name www.test.com;
root /data/t-nginx/test.com/;
index index.html ;
location /
{
echo "90 default";
}
}
접근 테스트:
#curl 127.0.0.1:90
90 default
# curl -x127.0.0.1:90 www.test.com
test.com_90
# curl -x127.0.0.1:80 www.test.com
test.com_90
80 포트 를 이용 하여 www. test. com 을 방문 할 때 90 포트 를 이용 하여 www. test. com 을 방문 하 는 것 과 마찬가지 로 역방향 에이전트 가 설정 되 었 음 을 증명 한다.
proxypass 뒤에 도 메 인 이름 이 연결 되 어 있 으 면 도 메 인 이름 은 이 컴퓨터 hosts 에서 분석 해 야 합 니 다.
proxy_set_header 의 Host $host 는 대응 하 며 전단 과 백 엔 드 주소 로 구 분 됩 니 다.
1.23 nginx 역방향 에이전트 - proxypass
어떤 경우 에 도 proxypass 의 주 소 는 마지막 에 모두 추가 하 는 것 이 좋 습 니 다 /
proxy_set_header 는 프 록 시 서버 에서 받 은 header 정 보 를 설정 하 는 데 사 용 됩 니 다.
proxyset_header field value;
field 는 변경 할 항목 이 고 변수의 이름 으로 도 이해 할 수 있 습 니 다. 예 를 들 어 host.
value 변수 값
프 록 시 를 설정 하지 않 으 면set_header, 기본 host 의 값 은 proxypass 뒤에 있 는 도 메 인 이나 IP (보통 IP),
예 를 들 어 예제 4, 백 엔 드 서버 에 요청 할 때 전체 요청 uri 는:http://192.168.1.10/linux/a.html
프 록 시 를 설정 하면set_header, 예 를 들 어 proxyset_header host $host;
예 를 들 어 예제 4, 백 엔 드 에 요청 한 서버 전체 uri 는:http://www.aminglinux.com/linux/a.html
proxy_set_header X-Real-IP $remote_addr;proxyset_header X-Forwarded-For $proxy_add_x_forwarded_for;
프 록 시 에 접 수 된 원 격 클 라 이언 트 IP 를 설정 하 는 데 사 용 됩 니 다. 설정 하지 않 으 면 header 정보 에 원 격 실제 클 라 이언 트 의 IP 주 소 를 전달 하지 않 습 니 다.
$remote_addr 원 격 클 라 이언 트 의 IP 주소
$proxy_add_x_forwarded_에이전트 의 IP 주소, 원 격 실제 클 라 이언 트 의 IP 주 소 를 기록 합 니 다.
예 를 들 어 A - > B - > C - > 그들의 역할 은 클 라 이언 트, 역방향 프 록 시, 실제 웹 서버 이다.그러면 A 의 주 소 는 $proxy 입 니 다.add_x_forwarded_for 에 기 록 된.
다음 예제 로 테스트 할 수 있 습 니 다.
예제 6 (피 에이전트)
server{
listen 8080;
server_name www.aminglinux.com;
root /tmp/123.com_8080;
index index.html;
location /linux/ {
echo "$host";
echo $remote_addr;
echo $proxy_add_x_forwarded_for;
}
}
예시 7 (프 록 시 서버 에서)
server {
listen 80;
server_name www.aminglinux.com;
location /aming/
{
proxy_pass http://192.168.1.10:8080/linux/;
proxy_set_header host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
1.24 Nginx 리 버스 프 록 시redirect
이 명령 은 프 록 시 서버 가 되 돌아 오 는 응답 헤드 의 Location 헤드 필드 와 "refresh" 헤드 필드 를 수정 하 는 데 사 용 됩 니 다.
문법 구 조 는 다음 과 같다.
proxy_redirect redirect replacement;
proxy_redirect default;
proxy_redirect off;
예시 8:
server {
listen 80;
server_name www.aminglinux.com;
index index.html;
location /
{
proxy_pass http://127.0.0.1:8080;
proxy_set_header host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
요청 한 링크 는http://www.aminglinux.com/aming
결 과 는 301 로 돌아 가 방향 을 정 했다.http://www.aminglinux.com:8080/aming/
주의: 301 로 돌아 가 는 몇 가지 선 결 조건 이 있 습 니 다.
예시 9:
server {
listen 80;
server_name www.aminglinux.com;
index index.html;
location /
{
proxy_pass http://127.0.0.1:8080;
proxy_set_header host $host;
proxy_redirect http://$host:8080/ /;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
nginx 역방향 에이전트 - proxypass
어떤 상황 이 든 지 간 에 모두 더 하 는 것 이 가장 좋다.
버퍼 와 캐 시https://coding.net/u/aminglinux/p/nginx/git/blob/master/proxy/bu_ca.md
Nginx 부하 균형
https://coding.net/u/aminglinux/p/nginx/git/blob/master/proxy/lb.md
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
docker - nginx - proxy_pass + proxy_redirect목적: 프로젝트 도 메 인 이름 www.foo.test(/index.php)/controller/action 을 www.foo.test/project/controller/action 으로 바 꾸 고 정상적으로 접근 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.