问题描述
我现在写的代码如下,不管用。是需要写rewrite规则,用正则表达式,或者if之类的?
以及:如果在nodejs中配置静态文件目录,app.use(express.static(__dirname));这样,性能上会比nginx直接判断处理低吗?
server {listen 80;server_name xxx.wechattest.com;root /path/to/static/root;index index.html;location / {proxy_pass http://127.0.0.1:9999;//nodejs service is running on port 9999proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;client_max_body_size 100M;client_body_buffer_size 1m;proxy_intercept_errors on;proxy_buffering off;proxy_buffer_size 128k;proxy_buffers 256 16k;proxy_busy_buffers_size 256k;proxy_temp_file_write_size 256k;proxy_max_temp_file_size 0;proxy_read_timeout 300;}}
问题解答
回答1:location / { try_files $uri @nodejs;}location @nodejs {proxy_pass http://127.0.0.1:9999;//nodejs service is running on port 9999proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;client_max_body_size 100M;client_body_buffer_size 1m;proxy_intercept_errors on;proxy_buffering off;proxy_buffer_size 128k;proxy_buffers 256 16k;proxy_busy_buffers_size 256k;proxy_temp_file_write_size 256k;proxy_max_temp_file_size 0;proxy_read_timeout 300;}回答2:
你设置一下404状态时转发。另外,你现在的配置是直接使用了反向代理,所有到80端口的都转向9999端口的代理服务器了。
回答3:可以使用try_files 或者 error_page两个命令都能实现你要的效果。
同时还可以使用proxy_store实现完全静态化页面。