nginx 도 메 인 이름 에 접근 한 화이트 리스트 설정 정리
일상적인 운영 업무 에서 이러한 수요 에 부 딪 힐 수 있다. 사이트 방문 을 설정 하면 일부 ip 에 만 개방 되 고 다른 ip 의 클 라 이언 트 는 방문 할 수 없다.다음 네 가지 방법 을 통 해 이러한 효 과 를 얻 을 수 있 습 니 다. 1) nginx 도 메 인 이름 설정 에 사용 되 는 포트 (예 를 들 어 80 포트) 는 iptables 에서 화이트 리스트 를 만 들 수 있 습 니 다. 예 를 들 어 100.110.15.16, 100.110.15.17, 100.110.15.1.1.15.18 만 접근 할 수 있 습 니 다. 그러나 이렇게 하면 nginx 의 모든 80 포트 의 도 메 인 이름 접근 을 제한 하고 범위 가 비교적 큽 니 다!
[root@china ~]# vim /etc/sysconfig/iptables
......
-A INPUT -s 100.110.15.16 -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -s 100.110.15.17 -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -s 100.110.15.18 -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
2) nginx 의 도 메 인 이름 에 만 접근 할 수 있 는 화이트 리스트 제한 이 있다 면 nginx 설정 파일 에 설정 할 수 있 습 니 다. $remoteaddr 매개 변 수 를 방문 하 는 배포 제한 은 다음 과 같 습 니 다.
[root@china vhosts]# cat testwww.wangshibo.com.conf
server {
listen 80;
server_name testwww.wangshibo.com;
root /var/www/vhosts/testwww.wangshibo.com/httpdocs/main;
access_log /var/www/vhosts/testwww.wangshibo.com/logs/access.log main;
error_log /var/www/vhosts/testwww.wangshibo.com/logs/error.log;
## , ip 。
if ($remote_addr !~ ^(100.110.15.16|100.110.15.17|100.110.15.18|127.0.0.1)) {
rewrite ^.*$ /maintence.php last;
}
location / {
try_files $uri $uri/ @router;
index index.php;
}
error_page 500 502 503 504 /50x.html;
location @router {
rewrite ^.*$ /index.php last;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9001;
fastcgi_read_timeout 30;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
#include fastcgi_params;
include fastcgi.conf;
}
}
:
[root@china vhosts]# cat /var/www/vhosts/testwww.wangshibo.com/main/maintence.html
, ...
3) $http 도 사용 가능x_forwarded_for 매개 변수 에 접근 하 는 배포 제한 은 다음 과 같 습 니 다.
server {
listen 80;
server_name testwww.wangshibo.com;
root /var/www/vhosts/testwww.wangshibo.com/httpdocs/main;
access_log /var/www/vhosts/testwww.wangshibo.com/logs/access.log main;
error_log /var/www/vhosts/testwww.wangshibo.com/logs/error.log;
## , ip 。
if ($http_x_forwarded_for !~ ^(100.110.15.16|100.110.15.17|100.110.15.18|127.0.0.1)) {
rewrite ^.*$ /maintence.php last;
}
location / {
try_files $uri $uri/ @router;
index index.php;
}
error_page 500 502 503 504 /50x.html;
location @router {
rewrite ^.*$ /index.php last;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9001;
fastcgi_read_timeout 30;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
#include fastcgi_params;
include fastcgi.conf;
}
}
4) nginx 의 allow, deny 매개 변 수 를 이용 하여 접근 제한 도 할 수 있다.
[root@china vhosts]# cat testwww.wangshibo.com.conf
server {
listen 80;
server_name testwww.wangshibo.com;
root /var/www/vhosts/testwww.wangshibo.com/httpdocs/main;
access_log /var/www/vhosts/testwww.wangshibo.com/logs/access.log main;
error_log /var/www/vhosts/testwww.wangshibo.com/logs/error.log;
## , ip 。
allow 100.110.15.16;
allow 100.110.15.17;
allow 100.110.15.18;
allow 127.0.0.1;
deny all;
location / {
try_files $uri $uri/ @router;
index index.php;
}
error_page 500 502 503 504 /50x.html;
location @router {
rewrite ^.*$ /index.php last;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9001;
fastcgi_read_timeout 30;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
#include fastcgi_params;
include fastcgi.conf;
}
}
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *addr 와 xforwarded_for 매개 변수 사용 설명
remote_addr x_forwarded_for IP, CDN , , 。
1) remote_addr
remote_addr IP, , ip , , ,
web (Nginx,Apache ) remote_addr IP, , , , web
remote_addr IP。
2) x_forwarded_for
, ,web IP , , x_forwarded_for ,
IP( IP) , web IP
------------------- HAProxy ----------------------
, web , ( HAProxy), 。
, web , web remote_addr IP,
IP, HAProxy :
option forwardfor
, x_forwarded_for , ip
------------------ Nginx realip --------------------
Nginx HAProxy , remote_addr HAProxy IP, , nginx realip , x_forwarded_for 。
Nginx, --with-http_realip_module
set_real_ip_from 10.1.10.0/24;
real_ip_header X-Forwarded-For;
10.1.10 X-Forwarded-For remote_addr
------------------ Nginx HAProxy HTTPS ---------------
https ,https ssl ,HAProxy , HAProxy Nginx , HAProxy
。 Web , IP, 。
Nginx :
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
Nginx https x_forwarded_for , IP。
HAProxy :
option forwardfor except 10.1.10.0/24
, IP , HAProxy (https ), x_forwarded_for ,
web https 。
----------------- PHP HTTP_X_FORWARDED_FOR Nginx ------------------
CDN , CDN, CDN , ( ) 。CDN , x_forwarded_for , IP,
, , CDN IP( remote_addr) x_forwarded_for , x_forwarded_for 。
Nginx , IP, PHP , CDN 。 PHP , fastcgi 。
fastcgi_param HTTP_X_FORWARDED_FOR $http_x_forwarded_for;
nginx ( IP) PHP, PHP x_forwarded_for , CDN IP 。
x_forwarded_for
, Nginx realip , remote_addr IP,
set_real_ip_from 10.1.10.0/24;
real_ip_header X-Forwarded-For;
x_forwarded_for remote_addr, nginx x_forwarded_for IP。
remote_addr IP, x_forwarded_for :)
다음은 다음 nginx 위치 매 칭 규칙 을 간단하게 설명 합 니 다.
location
~ ,
~* ,
^~ , , , ,
=
@ location, , error_page, try_files
= 。 , 。
, 。 ^〜 , 。
, 。
3 , 。 , 2 。
location ( location )
= 。 ,nginx 。
, , 。
^~ ,nginx , nginx location 。
"~" "~*" , , nginx ; , 。
location = / { # "/".
[ configuration A ]
}
location / { # , "/" ,
[ configuration B ]
}
location ^~ /images/ { # /images/ , location
[ configuration C ]
}
location ~* \.(gif|jpg|jpeg)$ { # gif, jpg, or jpeg . /images/ [Configuration C] .
[ configuration D ]
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.