天天看点

使用nginx配置静态页面展示sphinx-doc

文章目录

  • ​​1. 安装nginx​​
  • ​​2. 设置静态页面请求​​
  • ​​3. 遇到问题的分析​​
  • ​​1. 网页 403 Forbidden​​
  • ​​2. 网页 404 Not Found​​
  • 系统: Ubuntu
  • 目的: 使用sphinx-doc给实验室制作了一套找工作的经验说明, 但是生成的index尝试了使用Django挂载特别麻烦(需要修改静态文件js, css等的相对链接), 然后发现还可以有两种方式挂载到网络上面, 这里使用nginx挂载
  • 思路:
  1. 首先我有一个云服务器, 所以有公网ip, 所以我可以实现我的html在全网可以访问, 所以拿到了我做好的html页面即可;
  2. 由于每个服务器的默认web服务端口是​

    ​80​

    ​​, 这里考虑到还有很多页面或者服务也会用到默认端口​

    ​80​

    ​​; 为啥​

    ​80​

    ​​这么重要, 因为只有挂载到​

    ​80​

    ​​端口的服务, 在浏览器上只需要输入​

    ​域名/请求资源​

    ​​, 而不是使用​

    ​域名:指定端口/请求资源​

    ​; 也就是少了一个端口指定的操作, 毕竟端口都不好记
  3. 基于上面的问题, 想到​

    ​nginx​

    ​​, 反向代理器, 其中一个功能就是可以​

    ​把外面的请求转化为内部的请求​

    ​​; 通俗的讲, 就是当我本地服务有一个 ​

    ​ip:8001/index.html​

    ​​ 和​

    ​ip:8002/a.jpg​

    ​​, 由于上面两个服务占用的不同的端口, 这时候我希望通过​

    ​ip/index.html​

    ​​ 和 ​

    ​ip/a.jpg​

    ​​来实现访问就需要用到nginx了, 因为他可以在外部请求(​

    ​ip/index.html​

    ​​ 和 ​

    ​ip/a.jpg​

    ​​)时转化为内部的( ​

    ​ip:8001/index.html​

    ​​ 和​

    ​ip:8002/a.jpg​

    ​)不同服务
  4. 最终的结果就是要实现 访问​

    ​ip/请求资源​

    ​​获得上面​

    ​sphinx-doc​

    ​​生成的​

    ​index.html​

    ​页面
  • nginx版本: ​

    ​nginx version: nginx/1.14.0 (Ubuntu)​

  • ​​想要了解和使用sphinx-doc请点击跳转​​

1. 安装nginx

​$ sudo apt install nginx​

2. 设置静态页面请求

sudo vi /etc/nginx/nginx.conf # 配置文件

# 下面是配置信息
# user www-data;
user ubuntu; # 修改: 由于我的用户是`ubuntu`, 所以这里修改为ubuntu
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
    worker_connections 768;
    # multi_accept on;
}

http {

    ##
    # Basic Settings
    ##

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    # server_tokens off;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    ##
    # SSL Settings
    ##

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
    ssl_prefer_server_ciphers on;

    ##
    # Logging Settings
    ##

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    ##
    # Gzip Settings
    ##

    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;

    ##
    # Virtual Host Configs
    ##

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;

# ------其他都不用动, 只需要修改这里即可-------------
server {
    listen       80;                                                         
    server_name  1.14.76.177;                                               
    # client_max_body_size 1024M;
    # 我想要请求的就是"/home/ubuntu/zjq/sphinx_doc/build/html/index.html"
    location / { # 资源路径块,定位资源文件位置。
        root   "/home/ubuntu/zjq/sphinx_doc/build/html";
        index  index.html;
    }
    # 上面location 后面的 "/" 指明root/index.html
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html/;
    }
}

# -------到这里为止------------------------
}



sudo systemctl reload nginx # 重新加载nginx, 就可以在浏览器上访问了      
使用nginx配置静态页面展示sphinx-doc

3. 遇到问题的分析

1. 网页 403 Forbidden

使用nginx配置静态页面展示sphinx-doc

这是由于用户问题, 由于​

​/etc/nginx/nginx.conf # 配置文件​

​​中, 默认的用户是www-data, 而这个用户是假的, 所以需要根据当前Ubuntu的用户进行修改, 我的是 ​

​ubuntu​

​, 修改完就好了

  • 查看当前nginx的用户 ​

    ​ps aux | grep "nginx: worker process" | awk '{print $1}'​

2. 网页 404 Not Found

使用nginx配置静态页面展示sphinx-doc

这是由于​

​/etc/nginx/nginx.conf # 配置文件​

​中,

  • 查看80端口 ​

    ​netstat -ntpl | grep 80​

继续阅读