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;php
--with-http_ssl_module
:安装https服务模块html
/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
复制代码
设置开机自启动:nginx
echo "/opt/soft/nginx/sbin/nginx -c /opt/soft/nginx/conf/nginx.conf" >> /etc/rc.local
复制代码
主要配置server模块的 listen 和 server_nameweb
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等方式指向静态资源
}
复制代码
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等方式指向静态资源
}
}
复制代码
主要配置location模块的 proxy_pass后端
server {
listen 80;
server_name test.b.com;
location / {
proxy_pass http://192.168.0.2; #反向代理到其余应用服务器或web服务器
}
}
复制代码
主要配置upstream和location模块的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策略的负载均衡解决session问题。每一个请求按访问ip的hash结果分配,这样每一个访客固定访问一个后端服务器,可较好地解决session的问题。tomcat
location /svn/ {
root /data/ftp/;
autoindex on;
}
复制代码
访问127.0.0.1/svn/a.jpg
:则会进入到 /data/ftp/svn/a.jpgbash
location /svn/ {
alias /data/ftp/;
autoindex on;
}
复制代码
访问127.0.0.1/svn/a.jpg
:则会进入到 /data/ftp/a.jpg服务器
注意:alias和root后的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
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;
}
复制代码
“location /xxx/”表示匹配ip:port/xxx
,需注意:
- 能匹配到 test.com/xxx/home.jpg;
- 不能匹配到 test.com/folder/xxx/home.jpg;
- 若是须要匹配到后者,应改成:
location /folder/xxx/
科普:
通常默认都有location = /(精确匹配)
,而还有一种是 location /(模糊匹配)
。
二者的区别是:模糊匹配就算匹配到也会一直匹配下去,而精确匹配不会。
例: 如上例中,把location = /
换成location /
,那么请求 112.74.55.239/svn/
:
/
,请求的物理路径变成了:/usr/local/nginx/html/svn/
,实际访问的物理路径变成了: /usr/local/nginx/html/data/svn/location ~ \.php${
rewirte "^/php/(.*)$" http://localhost:8090/$1
}
复制代码
localhost/php/test.php
重定向到localhost:8090/test.php
。若是正则表达式(regex)匹配到了请求的URI(request URI),这个URI会被后面的replacement替换可选的flag参数以下:
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;
复制代码
proxy_set_header X-Forwarded-Proto $scheme;
复制代码
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
复制代码