nginx的一次安装与配置

20190624更新

html里面的引用不要使用绝对引用 不然使用二级域名会出错

例如网站根目录在/var/www/html/

项目在/var/www/html/demo里面

index.html引用/menu.html

nginx配置的二级域名/demoTest

menu.html正确的url因该是 http://localhost/demoTest/menu.html

如果是绝对引用就变成了 http://localhost/menu.html

这样当然找不到文件啦

如果不是二级域名则可以忽略该问题

也就是说新建了一个nginx站点,指定了另一个域名,例如demoTest

然后把根目录指定为/var/www/html/demo

这样访问的话就是 http://demoTest

显然这样做需要在hosts里面添加记录

127.0.0.1        demoTest


上个星期部署项目的时候发现公司用的nginx代理的tomcat,之前我就认识apache和tomcat这俩,于是从头学了

下载地址 http://nginx.org/en/download.html

我用的linux,debian系列,kali2017,更新到现在应该叫2018了,于是用的包安装

具体介绍在里面,我英语渣,勉强能看懂 http://nginx.org/en/linux_packages.html#stable

先下载apt-key,大概是类似证书一类的东西,然后导入

apt-key add 下载的key文件

之后在更新源里添加

deb http://nginx.org/packages/debian/ codename nginx
deb-src http://nginx.org/packages/debian/ codename nginx

然后就是更新 apt-get update, 安装 apt-get install nginx

然后我发现我的linux自带了nginx,果然装个kali真省事,好多软件都有了,不用自己去找源

版本信息 nginx -v, 我的是1.13.10

kali下nginx的配置文件在 /etc/nginx下,看了目录结构后发现这和apache结构一样啊,看了配置文件之后,这俩用起来简直一样啊

之前想看weblogic的配置,看了安装后我就放弃了,之前装oracle数据库有心里阴影了

nginx的主要配置文件是位于主目录的nginx.conf

最好不要把所有配置信息都扔里面,我就扔了

    gzip on;
    gzip_vary on;
    gzip_proxied any;
    gzip_comp_level 6;
    gzip_buffers 16 8k;
    gzip_http_version 1.1;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    fastcgi_buffer_size 64k;
    fastcgi_buffers 4 64k;
    fastcgi_busy_buffers_size 128k;
    fastcgi_temp_file_write_size 128k;

这些,当然,原来的我也没删,对了,不建议用tab键代替缩进,四个空格虽然麻烦些,但至少所有的文本编辑器都能解析成一个显示效果

具体服务的配置文件放在主目录下的conf.d里面,比较好管理

我的一个配置文件 tomcat-server.conf

server {
    listen 80;
    server_name www.library.dev.co;

    # 这个是我的作业,域名是假的,所以随意了,

    # 假域名在/etc/hosts下配置 只要ip写成127.0.0.1 后面写啥都可以

    # 不过顾名思义,假域名就是只有你能访问的域名,别人可访问不了,一般用于测试自己的程序

    # 虽然127也能用,不过想让多个应用都跑80端口的话,不用反向代理我也不知道咋弄了

    # 还有种情况就是DNS劫持,不过这种DNS劫持就是修改本地的HOSTS文件,把一些网址改成他们想让你去的主机的IP地址

    # 比如说钓鱼网站啊这些东西,貌似现在很少能见到了,零几年那会这玩意很常见的,毕竟杀软少,防范意识差

    location / {        # 注意 反斜杠和花括号之间有空格 不要忘了 另外分号也别忘了,作为java程序员,基本不会忘记,导致写文档写完一行都习惯打个分号
        proxy_pass http://localhost:8081;      #来自jsp请求交给tomcat处理
        proxy_redirect off;
        proxy_set_header Host $host;       
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;#后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
        client_max_body_size 10m;           #允许客户端请求的最大单文件字节数
        client_body_buffer_size 128k;        #缓冲区代理缓冲用户端请求的最大字节数
        proxy_connect_timeout 90;            #nginx跟后端服务器连接超时时间(代理连接超时)
        proxy_read_timeout 90;                 #连接成功后,后端服务器响应时间(代理接收超时)
        proxy_buffer_size 4k;                     #设置代理服务器(nginx)保存用户头信息的缓冲区大小
        proxy_buffers 6 32k;                      #proxy_buffers缓冲区,网页平均在32k以下的话>,这样设置
        proxy_busy_buffers_size 64k;       #高负荷下缓冲大小(proxy_buffers*2)
        proxy_temp_file_write_size 64k;    #设定缓存文件夹大小,大于这个值,将从upstream服务器传
    }
}

server {
    listen 80;
    server_name 域名不给看;

    location / {
        proxy_pass http://localhost:8080;
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        client_max_body_size 10m;
        client_body_buffer_size 128k;
        proxy_connect_timeout 90;
        proxy_read_timeout 90;
        proxy_buffer_size 4k;
        proxy_buffers 6 32k;
        proxy_busy_buffers_size 64k;
        proxy_temp_file_write_size 64k;
    }

    location /demo2 {
        rewrite /demo2/(.*) /$1 break;         # 这是我测试一下二级域名怎么玩

        # 需求是两个应用,其中后者是前者的一部分,现在要将后者分离出来作为单独的服务存在,因为一个服务太大了不好管理升级,发布一次都要五六分钟(那些不是我写的,代码太乱了,看都不想看)

        # 说白了就是懒

        # 这样弄了之后,主服务通过一级域名访问,这个服务通过一级域名加二级域名访问,如果两个服务名字有冲突的话会发生什么我也没试过,不过一般不会吧,都作为单独的服务拉出来了不能在整个一样名字的服务吧
        proxy_pass http://localhost:8082;
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        client_max_body_size 10m;
        client_body_buffer_size 128k;
        proxy_connect_timeout 90;
        proxy_read_timeout 90;
        proxy_buffer_size 4k;
        proxy_buffers 6 32k;
        proxy_busy_buffers_size 64k;
        proxy_temp_file_write_size 64k;
    }
}

对了,这是三个tomcat服务器挂在了nginx上,如果三个tomcat要一起跑,肯定要改配置文件,端口号不能重复

具体如何配置看别人写的博客吧,毕竟未经允许不能转载,所以就放个链接

https://blog.csdn.net/T_ZZZ/article/details/76906599

大致上就是要改三个端口,shutdown,http,ajp这仨,我是三个服务,所以要保证九个端口不被占用,于是我就用连着的8080,8081,8082......其他的也是(突然发现我好懒)

第一次没改shutdown,于是发现关了一个服务,其他俩也关掉了......

xml配置文件的块注释是<!-- Write here something -->

conf的配置文件的单行注释是#开头的

如果有配置用不到就注释掉比较好,删掉的话下次用的时候可能就忘记是啥了

nginx有个好东西,检测配置文件是否正确,nginx -t,重新加载配置文件是nginx -s reload

windows下启动nginx直接打开nginx.exe就行了,停止是nginx -s quit或者nginx -s stop

linux下启动服务 service nginx start, 停止就是service nginx startstop,当然也可以用nginx的那些命令,也就是windows的那些

不过不知道为啥,我只能用service命令启动

主服务: 域名/user/xxxxx

独立的那个服务: 域名/demo1/user/xxxxx

来自1942年冬季攻势中的中央集团军的037号17吨救援拖车
原文地址:https://www.cnblogs.com/panther1942/p/8695318.html