반응형
1. 왜 동정을 분리해야 하는가
자원을 분리하여 불필요한 청을 줄이다소모를 요구하며, 요청 지연 시간을 줄인다.
비고: 나 여기, nginx야.정적 자원을 정리하고, 아파치는 동적 자원을 처리한다.
장면 분석:
1, 분리되지 않은 이전 장면
(1) 클라이언트에서 url 요청 중스페이서(예: nginx, apache)
(2) 미들웨어는 url 요청에 따라해당하는 디렉터리, 프로그램 프레임워크
(3) 프로그램 프레임워크 실행 프로그램 논리
(4) 프로그램 로직 요구 해당 데이터자원
(5)데이터 자원을 고객에게 반환끝
비고: 사실, 정적 자원은 필요하지 않습니다.동적 요청을 거쳐 직접 미들웨어를 클라이언트에 반환하면 된다.그러니까 1단계랑 5단계만 하면 되는 거예요
설정 파일 보기:
upstream php_api{
#에이전트가 로컬 APACH 서버에 동작 분리를 요청함 (APACH 기본 포트를 81로 변경함)
server 127.0.0.1:81;
}
server {
listen 80;
server_name www.xiaobudiu.top;
access_log /etc/nginx/logs/access/www.xiabudiu.top.access.log main;
root /data/www;
location ~ \.php$ {
#만약 사이트에서 방문한 url 접미사가 .php라면, 에이전트는 apache를 사용하여 해석한다
proxy_pass http://php_api;
index index.html index.htm;
}
#정적 자원을 요청하면 기본적으로 nginx를 사용합니다
location ~ \.(jpg|png|gif)$ {
expires 1h;
gzip on;
}
location /{
index index.html index.htm;
}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 404 403 /404.html;
location = /404.html {
root /data/errorPage;
}
location ~ /\.ht {
deny all;
}
}
또는 다음과 같다
upstream image {
server 192.168.0.3:80;
server 192.168.0.4:80;
}
upstream php {
server 192.168.0.5:80;
server 192.168.0.6:80;
}
server {
listen 80;
server_name www.xiaobudiu.top;
access_log /etc/nginx/logs/access/www.xiabudiu.top.access.log main;
location /{
#만약 uri 접미사가 .php 또는 그림 접미사가 아니라면 로컬 서버에서 처리하십시오
root data/www;
index index.php index.html;
}
location ~* \.php$ {
#.php가 끝나는 경우, 역방향 에이전트가 Upstream php 그룹에 폴링합니다
proxy_pass http://php;
}
location ~* "\.(.jpg|png|jpeg|gif)" {
#.jpg,.png,.jpeg,.gif가 끝나면 역방향 에이전트가 upstream image 그룹으로 가서 폴링합니다
proxy_pass http://image;
}
# redirect server error pages to the static page /404.html
error_page 500 502 503 504 404 403 /404.html;
location = /404.html {
root /data/errorPage;
}
location ~ /\.ht {
deny all;
}
}
비고: 이것은 하위 프로필에서 정의됩니다. 예를 들어 /etc/nginx/conf.d/ www.xiaobudiu.top.conf 파일을 편집했습니다.
물론 nginx는 에이전트에 대한 일정한 요구가 있기 때문에 nginx.conf에서도 다음과 같이 일정한 정의를 내려야 한다.
nginx.conf
user nginx;
worker_processes 1;
worker_rlimit_nofile 65536;
error_log /etc/nginx/logs/error/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
multi_accept on;
use epoll;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /etc/nginx/logs/access/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
client_max_body_size 20m;
gzip on;
gzip_proxied any;
gzip_comp_level 3;
gzip_min_length 1k;
gzip_buffers 16 32k;
gzip_http_version 1.0;
gzip_types text/plain text/css application/json application/xml+rss text/javascript image/jpeg image/gif image/png;
fastcgi_buffers 256 16k;
fastcgi_buffer_size 128k;
fastcgi_connect_timeout 3s;
fastcgi_send_timeout 120s;
fastcgi_read_timeout 120s;
reset_timedout_connection on;
server_names_hash_bucket_size 100;
include /etc/nginx/conf.d/*.conf;
}
마지막으로, 상기 프로파일은 역방향 에이전트와 로드 밸런스가 어떻게 실현되는지를 설명하기 위한 것일 뿐 실제 프로젝트와 결합되어 있지 않다
반응형
'개발 꿀팁 > PHP' 카테고리의 다른 글
PHP 이미지를 데이터베이스에 업로드하여 표시 (0) | 2022.07.27 |
---|---|
PHP 구현 큐 양방향 큐 (0) | 2022.07.27 |
PHP 정책 패턴 쓰기 (0) | 2022.07.27 |
CrossPHP 프레임워크의 상용 동작 (0) | 2022.07.27 |
php zip 압축 파일 읽기 (스트리밍 동작) (0) | 2022.07.27 |