worker_processes auto;

error_log /var/log/nginx/error.log warn;

pid /var/run/nginx.pid;

worker_rlimit_nofile 4096;
events {
  use epoll;
  worker_connections 4096;
}


http {
  include /etc/nginx/mime.types;

  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 /var/log/nginx/access.log main;

  autoindex off;
  sendfile on;

  keepalive_timeout 300;
  keepalive_requests 100;
  proxy_read_timeout 900;
  proxy_connect_timeout 60;

  proxy_send_timeout 60;
  client_header_timeout 60;
  client_header_buffer_size 1k;
  large_client_header_buffers 4 64k;
  client_body_buffer_size 16K;
  client_body_timeout 60;
  send_timeout 60;
  server_tokens off;
  port_in_redirect off;
  limit_conn_zone $binary_remote_addr zone=conn_zone:10m;
  limit_conn_zone $server_name zone=perserver:10m;
  limit_req_zone global zone=req_zone:1m rate=1000r/s;
  limit_req_zone $binary_remote_addr zone=event_zone:10m rate=20r/s;

  proxy_request_buffering off;
  client_max_body_size 50m;

  proxy_hide_header X-Powered-By;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header REMOTE_ADDR $remote_addr;
  proxy_set_header REMOTE-HOST $remote_addr;
  proxy_intercept_errors on;

  gzip on;
  gzip_min_length 1k;
  gzip_buffers 4 16k;
  gzip_http_version 1.0;
  gzip_comp_level 5;
  gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/javascript application/x-httpd-php application/json;
  gzip_vary on;

  server {

    listen 80;
    server_name localhost;
    charset utf-8;
    limit_conn perserver 50;
    if ($request_method = 'OPTIONS') {
      return 401;
    }

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    error_page 404 /zh/404.html;

    location = /zh/404.html {
      root /usr/share/nginx/html;
    }


    location  /docs-search/ {
      proxy_pass https://doc-search.opengauss.org/;
    }

    # location  /docs-search/ {
    #   proxy_pass https://doc-search.test.osinfra.cn/;
    # }

    location  /omapi/ {
      proxy_pass https://omapi.osinfra.cn/;
    }

    location /ip-api/ {
      proxy_pass http://ip-api.com/json/;
    }

    location ~ /\. {
      deny all;
      return 404;
    }
  }
}