Nginx的安装

我用的是Ubuntu, 先升级一下apt-get

sudo apt-get update

然后直接apt安装

sudo apt-get install nginx

等待安装完成后,可以先查询一下版本

nginx -v

基本配置

默认会安装到/etc/nginx目录,我们进到这个目录ls 一下,会看到如下的目录结构 01.png 使用vi来修改配置文件

sudo vi nginx.conf

配置文件很长,但做反向代理的话,只需要关注几个地方,分别是: 03.png04.png http块里的东西都是用来配置转发的,下面的两个文件则是nginx的日志文件 假设我现在服务器上跑着一个服务,端口是8080,如果要访问的话,只能用

http://域名或IP:8080

来访问,一是要输入端口,就要在服务器上多开端口,二是显得不高端(2333)
或者是你在服务器上放了两个项目,然后你弄了两个域名,想A域名进A服务,B域名进B服务,这个时候就需要到了我们的反向代理来处理,在第一种情况,假设你的域名是www.abc.com你只需要在配置文件中的http块中,添加一段配置

        server {
                listen 80;
                server_name www.abc.com;
                location / {
                        # 这里与防火墙外网端口一致
                        # 否则下面$server_port调取就会出端口不同,造成样式无法加载!!!!
                        # 还有个原因是,内外网都能访问!!
                        # 这里$server_port是调取 listen的端口!
                        # 该行的意思是,在转发后获取原始的ip与端口
                        proxy_set_header Host $host:$server_port;
                        #这里表示把原始的信息带入进来
                        proxy_set_header X-Real-IP $remote_addr;
                        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                        #实际要访问的域名地址;要跟实际访问域名对应
                        proxy_set_header X-NginX-Proxy true;
                        proxy_pass http://127.0.0.1:8080;
                }
        }

添加完成后,就可以启动nginx来试试了,看看输入网址之后有没有跳转到你的服务
假如你的服务还需要上传文件,那就需要在上面的server块中添加(就是和)listen在同一层级,后面跟着的数字是最大限额,超过了就会阻止上传

client_max_body_size 1024m;

这样我们启动nginx

sudo systemctl start nginx.service

然后进行访问,就可以了
如果你有多个服务,就多加几个server块,如果你有多个url都想指向一个服务,可以在server_name上如下配置:

# 中间使用空格隔开
# 不要忘了结尾的分号
 server_name www.abc.com www.def.com;

你现在访问的我的博客,就是这样配置的,你可以试试http://blog.skiingpartner.com/http://kiingpartner.com/ 看看访问的到是是不是同一个服务

后台获取信息

在上面的配置文件里,有好几个proxy_set_header的配置,如果不带的话,会造成在转发请求的时候,没有带请求的原始信息,我们在后台服务调用request获取的时候,拿到的ip是127.0.0.1,在配置了上面的配置项之后,可以在后台代码中这样获取

// 注入 HttpServletRequest
@Autowired
HttpServletRequest request;

request.getHeader("X-Real-IP")
request.getHeader("Host")
request.getHeader("X-Forwarded-For")
request.getHeader("X-NginX-Proxy")

这样就可以在后台拿到原始请求的信息了,当然,如果还想拿其他的,也可以塞到里边,就看项目需求和功能了

文章作者: 马富贵
本文链接:
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 寒如水
服务器 server Nginx
喜欢就支持一下吧