Nginx使用总结

作者 : 开心源码 本文共4189个字,预计阅读时间需要11分钟 发布时间: 2022-05-12 共116人阅读

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
复制代码

Nignx配置虚拟主机、反向代理商、负载均衡

虚拟主机

主要配置server板块的 listen 和 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等方式指向静态资源
}
}

反向代理商

主要配置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的问题。

location映射规则

alias和root的区别

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

proxy_pass的url能否存在 / 的区别

注意: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 /xxx/” 与“location ^~ /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;

}

“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/:

  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(request URI),这个URI会被后面的replacement替换
  • 假如正则表达式(regex)里包含“}” or “;”字符,需要用单引号或者者双引号把正则表达式引起来
  • 假如replacement字符串里有新的request参数,那么之前的参数会附加到其后面,假如要避免这种情况,那就在replacement字符串后面加上“?”,eg: rewrite ^/users/(.*)$ /show?user=$1? last;=

可选的flag参数如下:

  1. last
  • 结束当前的请求解决,用替换后的URI重新匹配location;
  • 可了解为重写(rewrite)后,发起了一个新请求,进入server板块,匹配location;
  • 假如重新匹配循环的次数超过10次,nginx会返回500错误;
  • 返回302 http状态码 ;
  • 浏览器地址栏显示重定向后的url
  1. break
  • 结束当前的请求解决,使用当前资源,不在执行location里余下的语句;
  • 返回302 http状态码 ;
  • 浏览器地址栏显示重定向后的url
  1. redirect
  • 临时跳转,返回302 http状态码;
  • 浏览器地址栏显示重定向后的url
  1. permanent
  • 永久跳转,返回301 http状态码;
  • 浏览器地址栏显示重定向后的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;

websocket配置

map $http_upgrade $connection_upgrade {

default upgrade;

}

那么,作为一名Java程序员,怎么努力才能快速成长为一名高级的程序员或者者架构师,或者者说一名优秀的高级工程师或者架构师应该有怎么的技术知识体系,这不仅是一个刚刚踏入职场的初级程序员,也是工作三五年之后开始迷茫的老程序员,都必需要面对和想明白的问题。为了帮助大家少走弯路,我总结出一个Java程序员的工作2-5年成长路线图。需要相关资料可以关注+转发+私信我(七七)就能获取

一、开源框架解析

Nginx使用总结

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Nginx使用总结

发表回复