Базовая конфигурация Nginx для внешнего интерфейса

Nginx
Базовая конфигурация Nginx для внешнего интерфейса
Nginx (engine x) — это легкий высокопроизводительный HTTP и обратный прокси-сервер, а также прокси-сервер общего назначения (TCP/UDP/IMAP/POP3/SMTP), изначально написанный россиянином Игорем Сысоевым.


основные команды

nginx -t             检查配置文件是否有语法错误
nginx -s reload       热加载,重新加载配置文件
nginx -s stop         快速关闭
nginx -s quit         等待工作进程处理完成后关闭


После сборки и запуска сервера nginx давайте сначала рассмотрим конфигурацию nginx по умолчанию, а затем один за другим представим различные сценарии использования.

распределение по умолчанию

В каталоге установки Nginx делаем копию `nginx.conf`成`nginx.conf.default`Сделайте резервную копию как файл конфигурации, затем измените`nginx.conf`

# 工作进程的数量
worker_processes  1;
events {
    worker_connections  1024; # 每个工作进程连接数
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    # 日志格式
    log_format  access  '$remote_addr - $remote_user [$time_local] $host "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for" "$clientip"';
    access_log  /srv/log/nginx/access.log  access; # 日志输出目录
    gzip  on;
    sendfile  on;

    # 链接超时时间,自动断开
    keepalive_timeout  60;

    # 虚拟主机
    server {
        listen       8080;
        server_name  localhost; # 浏览器访问域名

        charset utf-8;
        access_log  logs/localhost.access.log  access;

        # 路由
        location / {
            root   www; # 访问根目录
            index  index.html index.htm; # 入口文件
        }
    }

    # 引入其他的配置文件
    include servers/*;
}


построить сайт

В другом каталоге `servers` файла конфигурации добавьте новый файл конфигурации сайта xx.conf.
Добавлен файл Hosts компьютера 127.0.0.1xx_domian

# 虚拟主机
server {
    listen       8080;
    server_name  xx_domian; # 浏览器访问域名

    charset utf-8;
    access_log  logs/xx_domian.access.log  access;

    # 路由
    location / {
        root   www; # 访问根目录
        index  index.html index.htm; # 入口文件
    }
}

Запустите nginx -s reload, после успешного доступа к браузеруxx_domian чтобы увидеть вашу страницу


Установите время истечения срока действия в зависимости от типа файла

location ~.*\.css$ {
    expires 1d;
    break;
}
location ~.*\.js$ {
    expires 1d;
    break;
}

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
    access_log off;
    expires 15d;    #保存15天
    break;
}

# curl -x127.0.0.1:80 http://www.test.com/static/image/common/logo.png -I #测试图片的max-age


Отключить кеширование файлов

Среда разработки часто изменяет код, потому что кэш браузера необходимо обновить, чтобы увидеть эффект. Здесь мы можем отключить кеширование браузера для повышения эффективности.

location ~* \.(js|css|png|jpg|gif)$ {
    add_header Cache-Control no-store;
}


противоугонная цепь

Может предотвратить вызов файлов другими веб-сайтами

location ~* \.(gif|jpg|png)$ {
    # 只允许 192.168.0.1 请求资源
    valid_referers none blocked 192.168.0.1;
    if ($invalid_referer) {
       rewrite ^/ http://$host/logo.png;
    }
}


Статическое сжатие файлов

server {
    # 开启gzip 压缩
    gzip on;
    # 设置gzip所需的http协议最低版本 (HTTP/1.1, HTTP/1.0)
    gzip_http_version 1.1;
    # 设置压缩级别,压缩级别越高压缩时间越长  (1-9)
    gzip_comp_level 4;
    # 设置压缩的最小字节数, 页面Content-Length获取
    gzip_min_length 1000;
    # 设置压缩文件的类型  (text/html)
    gzip_types text/plain application/javascript text/css;
}

Выполните команду nginx -s reload, доступ к браузеру после успеха

Укажите конкретную страницу ошибки

# 根据状态码,返回对于的错误页面
error_page 500 502 503 504 /50x.html;
location = /50x.html {
    root /source/error_page;
}

Выполните команду nginx -s reload, доступ к браузеру после успеха


междоменная проблема

Определение перекрестного домена

Политика того же источника ограничивает взаимодействие документов или сценариев, загруженных из одного источника, с ресурсами из другого источника. Это важный механизм безопасности для изоляции потенциально вредоносных файлов. Операции чтения между разными источниками обычно не допускаются.

Определение гомологии

Две страницы имеют один и тот же источник, если их протокол, порт (если указан) и доменное имя совпадают.


Принцип решения междоменных задач nginx

Например:

  • Имя домена внешнего сервера:http://xx_domain
  • Доменное имя внутреннего сервера:https://github.com

Сейчасhttp://xx_domainправильноhttps://github.comИнициирование запроса обязательно будет происходить междоменным.

Но нужно только запустить сервер nginx, будетserver_nameУстановить какxx_domain, а затем установите соответствующее расположение для перехвата внешних запросов, требующих междоменного доступа, и, наконец, прокси-сервер обратного запроса.github.com. Например, следующая конфигурация:

## 配置反向代理的参数
server {
    listen    8080;
    server_name xx_domain

    ## 1. 用户访问 http://xx_domain,则反向代理到 https://github.com
    location / {
        proxy_pass  https://github.com;
        proxy_redirect     off;
        proxy_set_header   Host             $host;        # 传递域名
        proxy_set_header   X-Real-IP        $remote_addr; # 传递ip
        proxy_set_header   X-Scheme         $scheme;      # 传递协议
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    }
}

Это прекрасно обходит политику браузера с одинаковым происхождением:github.comдоступnginxизgithub.comотносится к доступу того же происхождения, в то время какnginxЗапросы, пересылаемые на сервер, не активируют политику браузера с тем же источником.


Если вы считаете, что моя статья полезна для вас, пожалуйста, поставьте лайк и поддержите