Сводка по использованию Nginx

Nginx

Установка Nginx

Установить

tar zxvf nginx-1.2.9.tar.gz   #解压nginx
cd nginx-1.2.9   #进入目录
./configure --prefix=/opt/soft/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module   #配置安装模块
make install   #安装

--prefix: укажите каталог установки, каталог установки по умолчанию — /usr/local/nginx;

--with-http_ssl_module: установить сервисный модуль https

запускать

/opt/soft/nginx/sbin/nginx
/opt/soft/nginx/sbin/nginx -s stop   # fast shutdown
/opt/soft/nginx/sbin/nginx -s quit   # graceful shutdown
/opt/soft/nginx/sbin/nginx -s reload   # reloading the configuration file
/opt/soft/nginx/sbin/nginx -s reopen   # reopening the log files

Настройте загрузку на автоматический запуск:

echo "/opt/soft/nginx/sbin/nginx -c /opt/soft/nginx/conf/nginx.conf" >> /etc/rc.local

Nginx настроить виртуальный хост, обратный прокси, балансировку нагрузки

веб хостинг

В основном настройте прослушивание и server_name серверного модуля.

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

server {
	listen 80;
	server_name test.a.com;
	location / {
		proxy_pass http://192.168.0.1;   #反向代理到其他站点
	}
}
server {
	listen 80;
	server_name test.b.com;
	location / {
		proxy_pass http://192.168.0.2;   #反向代理到其他站点
	}
}

Уведомление:Сервер загрузки файла конфигурации

server {
	listen       80;
	server_name  file.download.com;
	charset utf-8;
	location ~ ^/(.*)$ {
		add_header Content-Disposition "attachment; filename=$1";   #设置header
		alias "C:/Robot_Download/$1";   #文件的本地位置
	}
}

порт на базе

server {
	listen 80;
	server_name localhost;
	alias /data/html/index.html;   #也可使用root、location等方式指向静态资源
}
server {
	listen 81;
	server_name localhost;
	root /data/html/index.html;   #也可使用alias、location等方式指向静态资源
}

IP на основе

server {
	listen 100.100.100.100:80;
	server_name localhost;
	location / {
		alias /data/html/index.html;   #也可使用alias、root等方式指向静态资源
	}
}
server {
	listen 100.100.100.101:80;
	server_name localhost;
	location / {
		alias /data/html/index.html;   #也可使用alias、root等方式指向静态资源
	}
}

обратный прокси

В основном настройте proxy_pass модуля местоположения

server {
	listen 80;
	server_name test.b.com;
	location / {
		proxy_pass http://192.168.0.2;   #反向代理到其他应用服务器或web服务器
	}
}

Балансировка нагрузки

В основном настройте proxy_pass для модулей восходящего потока и местоположения.

upstream tomcat_server_pool{
	ip_hash;
	server 127.0.0.1:8090 weight=10;   #设置访问权重,权重越高越容易被访问
	server 127.0.0.1:8100 weight=10;
	server 127.0.0.1:8110 weight=7;
}
server {
	listen 80;
	server_name test.b.com;
	location / {
		proxy_pass http://tomcat_server_pool;   #反向代理到其他服务器集合
	}
}

**ip_hash: **Используйте балансировку нагрузки стратегии ip_hash для решения проблемы сеанса. Каждый запрос распределяется в соответствии с результатом хеширования IP-адреса доступа, так что каждый посетитель получает фиксированный доступ к внутреннему серверу, что может лучше решить проблему сеанса.

правила сопоставления местоположения

Разница между псевдонимом и корнем

location  /svn/ {
	root /data/ftp/;
	autoindex on;
}

доступ127.0.0.1/svn/a.jpg: войдет в/data/ftp/svn/a.jpg

location  /svn/ {
	alias /data/ftp/;
	autoindex on;
}

доступ127.0.0.1/svn/a.jpg: войдет в/data/ftp/a.jpg

Разница между тем, существует ли URL-адрес proxy_pass/

Примечание. URL-адрес после псевдонима и корня должен быть добавлен с /

location  /proxy/ {
	proxy_pass http://127.0.0.1/;
}

доступ:127.0.0.1/proxy/a.jpg: запросит:http://127.0.0.1/a.jpg

location  /proxy/ {
	proxy_pass http://127.0.0.1;
}

доступ:127.0.0.1/proxy/a.jpg: запросит:http://127.0.0.1/proxy/a.jpg

Разница между «местоположением /xxx/» и «местоположением ^~ /xxx/»

location = / {   #表示匹配访问根目录
	root   html;   #当前安装目录下的html,/html则表示服务器根目录下的html
	index  index.html index.htm;
}
location /svn/ {   #表示匹配ip:port/svn/
	root /data/;
	autoindex on;
}
}
location ^~ /svn/ {   #表示只要含有svn/就会被匹配
	root /data/;
	autoindex on;
}

«местоположение /xxx/» означает совпадениеip:port/xxx, Необходимо отметить, что:

  1. может соответствоватьtest.com/xxx/дом.jpg;
  2. не может соответствоватьtest.com/folder/xxx/дом.jpg;
  3. Если вам нужно соответствовать последнему, его следует изменить на:location /folder/xxx/

Популярная наука:

Обычно по умолчаниюlocation = /(精确匹配), а другой естьlocation /(模糊匹配).

Разница между ними заключается в том, что нечеткое соответствие будет продолжать совпадать, даже если оно совпадает, а точное совпадение — нет.

пример: В приведенном выше примере поместитеlocation = /заменитьlocation /, затем запросить112.74.55.239/svn/:

  1. совпадет первым/, запрошенный физический путь становится следующим:/usr/local/nginx/html
  2. продолжать соответствовать/svn/, фактически доступный физический путь становится следующим:/usr/local/nginx/html/data/svn/

rewrite

location ~ \.php${
	rewirte "^/php/(.*)$" http://localhost:8090/$1
}
  • будетlocalhost/php/test.phpперенаправить наlocalhost:8090/test.php. Если регулярное выражение (regex) соответствует URI запроса (URI запроса), этот URI будет заменен следующей заменой
  • Если регулярное выражение (регулярное выражение) содержит символы «}» или «;», вам необходимо заключить регулярное выражение в одинарные или двойные кавычки.
  • Если в строке замены есть новый параметр запроса, то к нему будет добавлен предыдущий параметр, во избежание этого после строки замены добавьте "?", например: rewrite ^/users/(. *)$ /show?user =$1?последний;=

Необязательные параметры флага следующие:

  1. last
  • Завершите текущую обработку запроса и повторно сопоставьте местоположение с замененным URI;
  • Можно понять, что после перезаписи инициируется новый запрос, поступает в серверный модуль и соответствует локации;
  • Если количество рематчевых циклов превышает 10 раз, nginx вернет ошибку 500;
  • вернуть код состояния 302 http;
  • В адресной строке браузера отображается перенаправленный URL
  1. break
  • Завершить текущую обработку запроса, использовать текущий ресурс и не выполнять оставшиеся операторы в расположении;
  • вернуть код состояния 302 http;
  • В адресной строке браузера отображается перенаправленный URL
  1. redirect
  • Временный прыжок, возврат кода состояния 302 http;
  • В адресной строке браузера отображается перенаправленный URL
  1. permanent
  • Постоянно прыгать, возвращать код состояния http 301;
  • В адресной строке браузера отображается перенаправленный URL

Общая конфигурация

Поддержите серверную часть, чтобы получить реальный IP-адрес клиента вместо IP-адреса прокси-сервера.

proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

Решите проблему, из-за которой request.getScheme() не может получить настоящий протокол.

proxy_set_header X-Forwarded-Proto $scheme;

конфигурация веб-сокета

map $http_upgrade $connection_upgrade {
default upgrade;
	'' close;
}