这两天在学校看剧,由于是 BT 资源,就把整个剧集下载了,但是坐着看看累了,想躺着看。立即想到在电脑上搭建个 Web 服务器,然后开热点,用手机连接热点,打开视频播放。
涉及到:
- Nginx 的安装与基本配置
- 符号链接
- Nginx 打开目录索引(支持中文名)
- Nginx 403 Forbidden 权限问题
- 本地可以访问,其他机器不能访问
当然,现在想起来,其实也可以使用 Python 自带那个 HttpServer 实现的;不过之前装好了 Nginx 所以一下先想到的是 NG.
首先是安装 Nginx,Linux 可以使用包管理器直接安装,我觉得没必要从源码自己 make 安装,太麻烦了;Mac 可以使用 HomeBrew 安装,相当于一个包管理器。
Mac 下安装好后,服务器根目录在 /usr/local/var/www/ 配置目录在 /usr/local/etc/nginx/, 为了方便存取根目录文件,可以建一个符号链接到 Home 目录下,就是相当于一个快捷方式。
ln -s /usr/local/var/www ~/www
ln 命令用于创建符号链接,由于链接的是目录,只能创建软链接,用 -s 指定,然后是源目录,跟着新建的目录。见:http://man.linuxde.net/ln
然后可以把要供访问的文件放在 www 目录下就行了,这样就可以通过 HTTP 访问到。我这里的视频都在 ~/Download/video 中,于是又在 www 下新建了个符号链接,链接到 video 目录。
为了打开网址可以看到文件列表,需要配置 Nginx 列出文件,可以在 location 段中加入
autoindex on; #自动显示目录
autoindex_exact_size off; #人性化方式显示文件大小否则以byte显示
autoindex_localtime on; #按服务器时间显示,否则以gmt时间显示
charset utf-8,gbk; #中文乱码
重启 Nginx 发现出现 403,经过搜索,怀疑是文件权限或用户组的问题,然后列了下可以正常访问的文件和 403 的文件,果然是用户组不一样。
在我这,可以正常访问的文件的用户组是 admin,403 的用户组是 staff。而 Nginx 现在是主进程是 root 用户,子进程是我的用户名,因此在 nginx.conf 第一行加上
user xxx admin; 就好了(xxx 是我用户名)
最后一个奇怪的问题,在本地,用 域名或 IP 地址都可以访问到,但是链接到我的热点的设备访问不了。
原来是监听端口的问题。
需要把监听该为 0.0.0.0 而不是 127.0.0.1 大概意思是 127.0.0.1 是本地环回地址,0.0.0.0 才是监听所有地址。但是貌似 80 端口还是不好使,换成 8080 就好了。具体原因还不清楚,不过我的需要倒是实现了哈哈哈哈
这是我的配置文件:
cat /usr/local/etc/nginx/nginx.conf
user youthlin.chen admin;
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
listen [::]:80;
server_name localhost;
#access_log logs/host.access.log main;
location / {
autoindex on; #自动显示目录
autoindex_exact_size off; #人性化方式显示文件大小否则以byte显示
autoindex_localtime on; #按服务器时间显示,否则以gmt时间显示
charset utf-8,gbk; #中文乱码
root html;
index index.php index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/var/www/$fastcgi_script_name;
include fastcgi_params;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
include servers/*;
}
cat /usr/local/etc/nginx/servers/test.conf
upstream local_test{
server 127.0.0.1:80;
# server 127.0.0.1:8081;
}
server {
listen 8080;
listen [::]:8080;
location / {
autoindex on; #自动显示目录
autoindex_exact_size off; #人性化方式显示文件大小否则以byte显示
autoindex_localtime on; #按服务器时间显示,否则以gmt时间显示
charset utf-8,gbk; #中文乱码
#真实IP,Java里就可以使用【request.getHeader("X-Real-IP")】获取IP
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
#上游真实地址
proxy_pass http://local_test;
try_files $uri $uri/ =404;
}
}
声明
- 本作品采用署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。除非特别注明, 霖博客文章均为原创。
- 转载请保留本文(《通过 Nginx 实现在手机上播放电脑中的视频》)链接地址: https://youthlin.com/?p=1495
- 订阅本站:https://youthlin.com/feed/
“通过 Nginx 实现在手机上播放电脑中的视频”上的4条回复
我一般开共享
好高端,我只会用电脑局域网共享文件来看,生命不息折腾不止
说实话,这样真的好麻烦,放到vps上就行了
果然技术大牛,竟然自己搭内网……
我一般觉得复制到手机更舒服一些……