Nginx 설정 에이전트

4992 단어
nginx 는 이전 블 로그 에 설치 되 어 있 습 니 다.https://www.cnblogs.com/AganRun/p/12951618.html
nginx 로 전단 요청 과 백 엔 드 요청 을 나 누 는 방법 을 보 여 줍 니 다.
전단 배치
  • 우선 전단 템 플 릿 을 찾 아 서버 디 렉 터 리 에 넣 으 세 요.nginx 설치 디 렉 터 리 에 html 폴 더
  • 를 놓 았 습 니 다.
    [root@learn200 html]# pwd
    /usr/local/nginx/html
    [root@learn200 html]# ll
    total 56
    -rw-r--r--. 1 root root   537 May 24 16:45 50x.html
    -rw-r--r--. 1 root root  6620 May 24 17:57 about.html
    -rw-r--r--. 1 root root 12575 May 24 17:57 blog.html
    -rw-r--r--. 1 root root  5791 May 24 17:57 contact.html
    drwxr-xr-x. 2 root root   104 May 24 17:57 css
    drwxr-xr-x. 4 root root    38 May 24 17:57 fonts
    drwxr-xr-x. 2 root root   183 May 24 17:57 images
    -rw-r--r--. 1 root root 11012 May 24 17:57 index.html
    drwxr-xr-x. 2 root root   230 May 24 17:57 js
    -rw-r--r--. 1 root root  7608 May 24 17:57 portfolio.html
    
  • 브 라 우 저 를 열 고 로 컬 80 포트 를 방문 하면 첫 페이지 가 정상적으로 접근 할 수 있 음
  • 백 엔 드 배치
  • 플 라 스 크 데모 두 개 간단하게 쓰기
  • from flask import Flask
    
    server=Flask(__name__)
    
    @server.route('/api/test')
    def test():
        return "Hello AganRun 8081"
    
    server.run(port=8081, host='0.0.0.0')
    

    마찬가지 로 Demo 를 복 사 했 습 니 다. 포트 는 8082 에서 시작 되 었 습 니 다. 방문 구분 방문 을 위해 저 는 8082 로 돌 아 왔 습 니 다.
  • 서비스 시작
  • [root@learn200 python]# python3 demo1.py 
     * Serving Flask app "demo1" (lazy loading)
     * Environment: production
       WARNING: This is a development server. Do not use it in a production deployment.
       Use a production WSGI server instead.
     * Debug mode: off
     * Running on http://0.0.0.0:8081/ (Press CTRL+C to quit)
    

    방문 하 다.
    [root@learn200 python]# curl localhost:8081/api/test
    Hello AganRun 8081
    
    
    [root@learn200 python]# curl localhost:8082/api/test
    Hello AganRun 8082
    

    NGINX 에이전트
    위의 백 엔 드 접근 은 포트 를 통 해 직접 접근 합 니 다. 현재 nginx 프 록 시 에서 80 포트 의 / api 시작 요청 을 fllask 프로젝트 에 부하 균형 있 는 프 록 시 로 요청 합 니 다.
  • nginx. conf 를 편집 하여 다음 과 같은 내용 으로 설정 합 니 다.upstream 에 중점 을 두다
  • user nobody nobody;
    worker_processes 1; #    CPU     
    error_log /usr/local/nginx/logs/nginx_error.log crit; #         
    pid /usr/local/nginx/logs/nginx.pid;
    #Specifies the value for maximum file descriptors that can be opened by this process.
    worker_rlimit_nofile 65535;
    events
    {
      use epoll;
      worker_connections 65535;
    }
    http
    {
      include 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';
      
      #charset gb2312;
         
      server_names_hash_bucket_size 128;
      client_header_buffer_size 32k;
      large_client_header_buffers 4 32k;
      client_max_body_size 8m;
      
      sendfile on;
      tcp_nopush on;
      keepalive_timeout 60;
      tcp_nodelay on;
      fastcgi_connect_timeout 300;
      fastcgi_send_timeout 300;
      fastcgi_read_timeout 300;
      fastcgi_buffer_size 64k;
      fastcgi_buffers 4 64k;
      fastcgi_busy_buffers_size 128k;
      fastcgi_temp_file_write_size 128k;
      gzip on;      #    
      gzip_min_length 1k;
      gzip_buffers 4 16k;
      gzip_http_version 1.0;
      gzip_comp_level 2;
      gzip_types text/plain application/x-javascript text/css application/xml;
      gzip_vary on;
     
      upstream mysvr {   # flask    
        server 127.0.0.1:8081;
        server 127.0.0.1:8082;
      }
      #limit_zone crawler $binary_remote_addr 10m;
      #   server       
      server
      {
        listen 80;#    
        server_name localhost;#  
        location / {
          root /usr/local/nginx/html;
          index index.html index.htm;
        }
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|ico)$  #    
        {
          root /usr/local/nginx/html;
          expires 30d;
        }
        location ~ .*\.(js|css|html)$   #    
        {
          root /usr/local/nginx/html;
          expires 15d;
        }
        location ~ /api/            #     
        {
          proxy_pass http://mysvr;
          proxy_redirect default;
          proxy_connect_timeout 3;
          proxy_send_timeout 30;
          proxy_read_timeout 30;			
          proxy_set_header X-Forwarded-Host $host;
          proxy_set_header X-Forwarded-Server $host;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
          client_max_body_size 100m;
        }
        access_log logs/access.log;
      }
    
    }
    
    
  • 재 부팅
  • 설정 을 확인 한 후 nginx 를 다시 시작 합 니 다.
    [root@learn200 conf]# nginx -t
    nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
    nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
    [root@learn200 conf]# nginx -s reload
    
  • 요청
  • 볼 수 있 습 니 다. 요청 및 피 대리, 그리고 서로 다른 노드 로 나 누 어 줍 니 다.
    [root@learn200 conf]# curl localhost/api/test
    Hello AganRun 8081[root@learn200 conf]# curl localhost/api/test
    Hello AganRun 8082[root@learn200 conf]# curl localhost/api/test
    Hello AganRun 8081[root@learn200 conf]# curl localhost/api/test
    Hello AganRun 8082[root@learn200 conf]# 
    

    좋은 웹페이지 즐겨찾기